p_table <- function(tab_data, ...) {
tab_data_2 <- deparse(substitute(tab_data))
table_p <- do.call(CreateTableOne,
list(data = as.name(tab_data_2), includeNA = TRUE, ...))
table_p_out <- print(table_p,
showAllLevels = TRUE,
printToggle = FALSE)
kable(table_p_out,
align = "c")
}
f_plot <- function(test_var, data_imp){
cat("_________________________________________________")
cat("\n")
cat(" \n##", test_var)
cat("\n")
cat("_________________________________________________")
cat("\n")
f <- as.formula(paste(as.name(test_var),
"AGE + SEX + T_SIZE + FACILITY_TYPE_F + FACILITY_LOCATION_F + YEAR_OF_DIAGNOSIS",
sep = " ~ " ))
data_imp_2 <- deparse(substitute(data_imp))
fit_fn <- do.call("glm",
list(formula = f,
data = as.name(data_imp_2),
family = "binomial"))
print(summary(fit_fn))
or <- as.data.frame(exp(coefficients(fit_fn)))
or$Variable <- rownames(or)
rownames(or) <- c()
names(or) <- c('OddsRatio', 'Variable')
ci <- as.data.frame(exp(confint(fit_fn)))
ci$Variable <- rownames(ci)
rownames(ci) <- c()
p_val_list <- tidy(fit_fn) %>%
select(term, p.value) %>%
rename(Variable = term) %>%
mutate(p.value = round(p.value, 4))
p_val_list$p.value <- as.character(p_val_list$p.value)
p_val_list$p.value[p_val_list$p.value == "0"] <- "< 0.0001"
all <- full_join(or, ci, by = 'Variable')
all <- full_join(all, p_val_list, by = "Variable")
names(all) <- c('OddsRatio', 'Variable', 'Lower', 'Upper', "p_value")
all <- na.omit(all)
all <- all %>%
filter(Variable != '(Intercept)')
text <- cbind(c("Variable", as.character(all$Variable)),
c("Odds Ratio", as.character(round(all$OddsRatio, 2))),
c("Lower CI", as.character(round(all$Lower, 2))),
c("Upper CI", as.character(round(all$Upper, 2))),
c("p Value", all$p_value))
forestplot(text,
mean = c(NA, all$OddsRatio),
lower = c(NA, all$Lower),
upper = c(NA, all$Upper),
new_page = TRUE, zero = 1,
clip = c(0.1, 100),
hrzl_lines = list("2" = gpar(col="#444444")),
vertices = TRUE,
graph.pos = 2,
xlab = "Odds Ratio (log)",
align = "c",
txt_gp = fpTxtGp(cex = 0.7),
xticks = getTicks(low = all$Lower,
high = all$Upper,
clip=c(-Inf, Inf),
exp=TRUE),
boxsize = 0.1)
}
col.width <- c(37, 10, 1, 1, 3, 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 8, 2, 2, 2, 4, 4, 1, 4, 1, 1,
1, 3, 2, 2, 8, 2, 5, 5, 5, 4, 5, 5, 5,4, 2, 1, 2, 1, 3, 1, 1, 1, 1, 1, 1, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 6, 8,
8, 8, 2, 1, 1, 1, 1, 8, 1, 1, 8, 1, 1, 2, 2, 5, 2, 5, 3, 1, 3, 1, 8, 8, 2, 8,
2, 8, 2, 2, 1, 8, 1, 1, 1, 1, 1, 8, 1, 2, 2, 2, 2, 2, 1, 1, 1, 2, 1, 3, 1, 1,
1, 1, 1, 1, 1, 1, 1)
col.names.abr <- c("PUF_CASE_ID", "PUF_FACILITY_ID", "FACILITY_TYPE_CD", "FACILITY_LOCATION_CD",
"AGE", "SEX", "RACE", "SPANISH_HISPANIC_ORIGIN", "INSURANCE_STATUS",
"MED_INC_QUAR_00", "NO_HSD_QUAR_00", "UR_CD_03", "MED_INC_QUAR_12", "NO_HSD_QUAR_12",
"UR_CD_13", "CROWFLY", "CDCC_TOTAL_BEST", "SEQUENCE_NUMBER", "CLASS_OF_CASE",
"YEAR_OF_DIAGNOSIS", "PRIMARY_SITE", "LATERALITY", "HISTOLOGY", "BEHAVIOR", "GRADE",
"DIAGNOSTIC_CONFIRMATION", "TUMOR_SIZE", "REGIONAL_NODES_POSITIVE",
"REGIONAL_NODES_EXAMINED", "DX_STAGING_PROC_DAYS", "RX_SUMM_DXSTG_PROC", "TNM_CLIN_T",
"TNM_CLIN_N", "TNM_CLIN_M", "TNM_CLIN_STAGE_GROUP", "TNM_PATH_T", "TNM_PATH_N", "TNM_PATH_M",
"TNM_PATH_STAGE_GROUP", "TNM_EDITION_NUMBER", "ANALYTIC_STAGE_GROUP", "CS_METS_AT_DX",
"CS_METS_EVAL", "CS_EXTENSION", "CS_TUMOR_SIZEEXT_EVAL", "CS_METS_DX_BONE", "CS_METS_DX_BRAIN",
"CS_METS_DX_LIVER", "CS_METS_DX_LUNG", "LYMPH_VASCULAR_INVASION", "CS_SITESPECIFIC_FACTOR_1",
"CS_SITESPECIFIC_FACTOR_2", "CS_SITESPECIFIC_FACTOR_3", "CS_SITESPECIFIC_FACTOR_4",
"CS_SITESPECIFIC_FACTOR_5", "CS_SITESPECIFIC_FACTOR_6", "CS_SITESPECIFIC_FACTOR_7",
"CS_SITESPECIFIC_FACTOR_8", "CS_SITESPECIFIC_FACTOR_9", "CS_SITESPECIFIC_FACTOR_10",
"CS_SITESPECIFIC_FACTOR_11", "CS_SITESPECIFIC_FACTOR_12", "CS_SITESPECIFIC_FACTOR_13",
"CS_SITESPECIFIC_FACTOR_14", "CS_SITESPECIFIC_FACTOR_15", "CS_SITESPECIFIC_FACTOR_16",
"CS_SITESPECIFIC_FACTOR_17", "CS_SITESPECIFIC_FACTOR_18", "CS_SITESPECIFIC_FACTOR_19",
"CS_SITESPECIFIC_FACTOR_20", "CS_SITESPECIFIC_FACTOR_21", "CS_SITESPECIFIC_FACTOR_22",
"CS_SITESPECIFIC_FACTOR_23", "CS_SITESPECIFIC_FACTOR_24", "CS_SITESPECIFIC_FACTOR_25",
"CS_VERSION_LATEST", "DX_RX_STARTED_DAYS", "DX_SURG_STARTED_DAYS", "DX_DEFSURG_STARTED_DAYS",
"RX_SUMM_SURG_PRIM_SITE", "RX_HOSP_SURG_APPR_2010", "RX_SUMM_SURGICAL_MARGINS",
"RX_SUMM_SCOPE_REG_LN_SUR", "RX_SUMM_SURG_OTH_REGDIS", "SURG_DISCHARGE_DAYS", "READM_HOSP_30_DAYS",
"REASON_FOR_NO_SURGERY", "DX_RAD_STARTED_DAYS", "RX_SUMM_RADIATION", "RAD_LOCATION_OF_RX",
"RAD_TREAT_VOL", "RAD_REGIONAL_RX_MODALITY", "RAD_REGIONAL_DOSE_CGY", "RAD_BOOST_RX_MODALITY",
"RAD_BOOST_DOSE_CGY", "RAD_NUM_TREAT_VOL", "RX_SUMM_SURGRAD_SEQ", "RAD_ELAPSED_RX_DAYS",
"REASON_FOR_NO_RADIATION", "DX_SYSTEMIC_STARTED_DAYS", "DX_CHEMO_STARTED_DAYS", "RX_SUMM_CHEMO",
"DX_HORMONE_STARTED_DAYS", "RX_SUMM_HORMONE", "DX_IMMUNO_STARTED_DAYS", "RX_SUMM_IMMUNOTHERAPY",
"RX_SUMM_TRNSPLNT_ENDO", "RX_SUMM_SYSTEMIC_SUR_SEQ", "DX_OTHER_STARTED_DAYS", "RX_SUMM_OTHER",
"PALLIATIVE_CARE", "RX_SUMM_TREATMENT_STATUS", "PUF_30_DAY_MORT_CD", "PUF_90_DAY_MORT_CD",
"DX_LASTCONTACT_DEATH_MONTHS", "PUF_VITAL_STATUS", "RX_HOSP_SURG_PRIM_SITE", "RX_HOSP_CHEMO",
"RX_HOSP_IMMUNOTHERAPY", "RX_HOSP_HORMONE", "RX_HOSP_OTHER", "PUF_MULT_SOURCE", "REFERENCE_DATE_FLAG",
"RX_SUMM_SCOPE_REG_LN_2012", "RX_HOSP_DXSTG_PROC", "PALLIATIVE_CARE_HOSP", "TUMOR_SIZE_SUMMARY",
"METS_AT_DX_OTHER", "METS_AT_DX_DISTANT_LN", "METS_AT_DX_BONE", "METS_AT_DX_BRAIN",
"METS_AT_DX_LIVER", "METS_AT_DX_LUNG", "NO_HSD_QUAR_16", "MED_INC_QUAR_16", "MEDICAID_EXPN_CODE")
#Read in data for each subsite
lip <- read_fwf('NCDBPUF_Lip.3.2016.0.dat',
fwf_widths(col.width, col_names = col.names.abr),
col_types = cols(.default = col_character()))
melanoma <- read_fwf('NCDBPUF_Melanoma.3.2016.0.dat',
fwf_widths(col.width, col_names = col.names.abr),
col_types = cols(.default = col_character()))
skin <- read_fwf('NCDBPUF_OtSkin.3.2016.0.dat',
fwf_widths(col.width, col_names = col.names.abr),
col_types = cols(.default = col_character()))
hodgextr <- read_fwf('NCDBPUF_HodgExtr.3.2016.0.dat',
fwf_widths(col.width, col_names = col.names.abr),
col_types = cols(.default = col_character()))
hodgndal <- read_fwf('NCDBPUF_HodgNdal.3.2016.0.dat',
fwf_widths(col.width, col_names = col.names.abr),
col_types = cols(.default = col_character()))
NHLndal <- read_fwf('NCDBPUF_NHLNdal.3.2016.0.dat',
fwf_widths(col.width, col_names = col.names.abr),
col_types = cols(.default = col_character()))
breast <- read_fwf('NCDBPUF_Breast.3.2016.0.dat',
fwf_widths(col.width, col_names = col.names.abr),
col_types = cols(.default = col_character()))
vulva <- read_fwf('NCDBPUF_Vulva.3.2016.0.dat',
fwf_widths(col.width, col_names = col.names.abr),
col_types = cols(.default = col_character()))
vagina <- read_fwf('NCDBPUF_Vagina.3.2016.0.dat',
fwf_widths(col.width, col_names = col.names.abr),
col_types = cols(.default = col_character()))
penis <- read_fwf('NCDBPUF_Penis.3.2016.0.dat',
fwf_widths(col.width, col_names = col.names.abr),
col_types = cols(.default = col_character()))
#Combine data for all subsites
dat <- bind_rows(lip, melanoma, skin, hodgextr, hodgndal, NHLndal, breast,
vulva, vagina, penis)
rm(lip, melanoma, skin, hodgextr, hodgndal, NHLndal, breast, vulva, vagina, penis)
prim_site_text <- data_frame(PRIMARY_SITE =
#lip
c("C000", "C001", "C002", "C003", "C004", "C005",
"C006", "C008", "C009",
#skin/melanoma
"C440", "C441", "C442", "C443", "C444", "C445",
"C446", "C447", "C448", "C449",
#breast - nipple
"C500",
#vagina/vulva
"C510", "C511", "C512", "C518", "C519", "C529",
#penis
"C600", "C601", "C602", "C608", "C609", "C639"
),
SITE_TEXT = c(
#lip
"C00.0 External Lip: Upper NOS",
"C00.1 External Lip: Lower NOS",
"C00.2 External Lip: NOS",
"C00.3 Lip: Upper Mucosa",
"C00.4 Lip: Lower Mucosa",
"C00.5 Lip: Mucosa NOS",
"C00.6 Lip: Commissure",
"C00.8 Lip: Overlapping",
"C00.9 Lip, NOS",
#skin
"C44.0 Skin of lip, NOS",
"C44.1 Eyelid",
"C44.2 External ear",
"C44.3 Skin of ear and unspecified parts of face",
"C44.4 Skin of scalp and neck",
"C44.5 Skin of trunk",
"C44.6 Skin of upper limb and shoulder",
"C44.7 Skin of lower limb and hip",
"C44.8 Overlapping lesion of skin",
"C44.9 Skin, NOS",
#breast
"C50.0 Nipple",
#vulva/vagina
"C51.0 Labium majus",
"C51.1 Labium minus",
"C51.2 Clitoris",
"C51.8 Overlapping lesion of vulva",
"C51.9 Vulva, NOS",
"C52.9 Vagina, NOS",
#penis
"C60.0 Prepuce",
"C60.1 Glans penis",
"C60.2 Body of penis",
"C60.8 Overlapping lesion of penis",
"C60.9 Penis",
"C63.2 Scrotum, NOS"))
dat <- merge(dat, prim_site_text, by = "PRIMARY_SITE", all.x = TRUE)
rm(prim_site_text)
# convert numeric variables from character class to numeric class
num_vars <- c("AGE", "CROWFLY", "TUMOR_SIZE", "DX_STAGING_PROC_DAYS", "DX_RX_STARTED_DAYS", "DX_SURG_STARTED_DAYS",
"DX_DEFSURG_STARTED_DAYS", "SURG_DISCHARGE_DAYS", "DX_RAD_STARTED_DAYS", "RAD_REGIONAL_DOSE_CGY",
"RAD_BOOST_DOSE_CGY", "RAD_ELAPSED_RX_DAYS", "DX_SYSTEMIC_STARTED_DAYS", "DX_CHEMO_STARTED_DAYS",
"DX_HORMONE_STARTED_DAYS", "DX_OTHER_STARTED_DAYS", "DX_LASTCONTACT_DEATH_MONTHS",
"RAD_NUM_TREAT_VOL")
dat[num_vars] <- lapply(dat[num_vars], as.numeric)
# convert factor variables from character class to factor class
vars <- names(dat)
fact_vars <- vars[!(vars %in% num_vars)] # basically all of the non-numerics
dat[fact_vars] <- lapply(dat[fact_vars], as.character)
dat[fact_vars] <- lapply(dat[fact_vars], as.factor)
dat <- dat %>%
mutate(FACILITY_TYPE_F = fct_recode(FACILITY_TYPE_CD,
"Community Cancer Program" = "1",
"Comprehensive Comm Ca Program" = "2",
"Academic/Research Program" = "3",
"Integrated Network Ca Program" = "4",
"Other" = "9")) %>%
mutate(FACILITY_LOCATION_F = fct_recode(FACILITY_LOCATION_CD,
"New England" = "1",
"Middle Atlantic" = "2",
"South Atlantic" = "3",
"East North Central" = "4",
"East South Central" = "5",
"West North Central" = "6",
"West South Central" = "7",
"Mountain" = "8",
"Pacific" = "9",
"out of US" = "0")) %>%
mutate(FACILITY_GEOGRAPHY = fct_collapse(FACILITY_LOCATION_CD,
"Northeast" = c("1", "2"),
"South" = c("3", "7"),
"Midwest" = c("4", "5", "6"),
"West" = c("8", "9"))) %>%
mutate(AGE_F = cut(AGE, c(0, 54, 64, 74, 100))) %>%
mutate(AGE_40 = cut(AGE, c(0, 40, 100))) %>%
mutate(SEX_F = fct_recode(SEX,
"Male" = "1",
"Female" = "2")) %>%
mutate(RACE_F = fct_collapse(RACE,
"White" = c("01"),
"Black" = c("02"),
"Asian" = c("04", "05", "06", "07", "08", "10", "11", "12", "13", "14", "15",
"16", "17", "20", "21", "22", "25", "26", "27", "28", "30", "31",
"32", "96", "97"),
"Other/Unk" = c("03", "98", "99"))) %>%
mutate(HISPANIC = fct_collapse(SPANISH_HISPANIC_ORIGIN,
"Yes" = c("1", "2", "3", "4", "5", "6", "7", "8"),
"No" = c("0"),
"Unknown" = c("9"))) %>%
mutate(INSURANCE_F = fct_recode(INSURANCE_STATUS,
"None" = "0",
"Private" = "1",
"Medicaid" = "2",
"Medicare" = "3",
"Other Government" = "4",
"Unknown" = "9")) %>%
mutate(INSURANCE_F = fct_relevel(INSURANCE_F,
"Private")) %>%
mutate(INCOME_F = fct_recode(MED_INC_QUAR_12,
"Less than $38,000" = "1",
"$38,000 - $47,999" = "2",
"$48,000 - $62,999" = "3",
"$63,000 +" = "4")) %>%
mutate(EDUCATION_F = fct_recode(NO_HSD_QUAR_12,
"21% or more" = "1",
"13 - 20.9%" = "2",
"7 - 12.9%" = "3",
"Less than 7%" = "4")) %>%
mutate(U_R_F = fct_collapse(UR_CD_13,
"Metro" = c("1", "2", "3"),
"Urban" = c("4", "5", "6", "7"),
"Rural" = c("8", "9"))) %>%
mutate(CLASS_OF_CASE_F = fct_collapse(CLASS_OF_CASE,
All_Part_Prim = c("10", "11", "12", "13",
"14", "20", "21", "22"),
Other_Facility = c("00"))) %>%
mutate(GRADE_F = fct_recode(GRADE,
"Gr I: Well Diff" = "1",
"Gr II: Mod Diff" = "2",
"Gr III: Poor Diff" = "3",
"Gr IV: Undiff/Anaplastic" = "4",
"NA/Unkown" = "9")) %>%
mutate(HISTOLOGY_F = fct_infreq(HISTOLOGY)) %>%
mutate(HISTOLOGY_F = factor(HISTOLOGY_F)) %>%
mutate(HISTOLOGY_F_LIM = fct_lump(HISTOLOGY_F, prop = 0.05)) %>%
mutate(TNM_CLIN_T = fct_recode(TNM_CLIN_T,
"N_A" = "88")) %>%
mutate(TNM_CLIN_T = fct_relevel(TNM_CLIN_T,
"1")) %>%
mutate(TNM_CLIN_N = fct_recode(TNM_CLIN_N,
"N_A" = "88")) %>%
mutate(TNM_CLIN_M = fct_recode(TNM_CLIN_M,
"N_A" = "88")) %>%
mutate(TNM_PATH_T = fct_recode(TNM_PATH_T,
"N_A" = "88")) %>%
mutate(TNM_PATH_T = fct_relevel(TNM_PATH_T,
"1")) %>%
mutate(TNM_PATH_N = fct_recode(TNM_PATH_N,
"N_A" = "88")) %>%
mutate(TNM_PATH_M = fct_recode(TNM_PATH_M,
"N_A" = "88")) %>%
mutate(TNM_CLIN_STAGE_GROUP = fct_recode(TNM_CLIN_STAGE_GROUP,
"N_A" = "88")) %>%
mutate(TNM_PATH_STAGE_GROUP = fct_recode(TNM_PATH_STAGE_GROUP,
"N_A" = "88")) %>%
mutate(MARGINS = fct_recode(RX_SUMM_SURGICAL_MARGINS,
"No Residual" = "0",
"Residual, NOS" = "1",
"Microscopic Resid" = "2",
"Macroscopic Resid" = "3",
"Not evaluable" = "7",
"No surg" = "8",
"Unknown" = "9")) %>%
mutate(MARGINS_YN = fct_collapse(RX_SUMM_SURGICAL_MARGINS,
"Yes" = c("1", "2", "3"),
"No" = c("0"),
"No surg/Unk/NA" = c("7", "8", "9"))) %>%
mutate(READM_HOSP_30_DAYS_F = fct_recode(READM_HOSP_30_DAYS,
"No_Surg_or_No_Readmit" = "0",
"Unplan_Readmit_Same" = "1",
"Plan_Readmit_Same" = "2",
"PlanUnplan_Same" = "3",
"Unknown" = "4")) %>%
mutate(RX_SUMM_RADIATION_F = fct_recode(RX_SUMM_RADIATION,
"None" = "0",
"Beam Radiation" = "1",
"Radioactive Implants" = "2",
"Radioisotopes" = "3",
"Beam + Imp or Isotopes" = "4",
"Radiation, NOS" = "5",
"Unknown" = "9")) %>%
mutate(PUF_30_DAY_MORT_CD_F = fct_recode(PUF_30_DAY_MORT_CD,
"Alive_30" = "0",
"Dead_30" = "1",
"Unknown" = "9")) %>%
mutate(PUF_90_DAY_MORT_CD_F = fct_recode(PUF_90_DAY_MORT_CD,
"Alive_90" = "0",
"Dead_90" = "1",
"Unknown" = "9")) %>%
mutate(LYMPH_VASCULAR_INVASION_F = fct_recode(LYMPH_VASCULAR_INVASION,
"Neg_LymphVasc_Inv" = "0",
"Pos_LumphVasc_Inv" = "1",
"N_A" = "8",
"Unknown" = "9")) %>%
mutate(RX_HOSP_SURG_APPR_2010_F = fct_recode(RX_HOSP_SURG_APPR_2010,
"No_Surg" = "0",
"Robot_Assist" = "1",
"Robot_to_Open" = "2",
"Endo_Lap" = "3",
"Endo_Lap_to_Open" = "4",
"Open_Unknown" = "5",
"Unknown" = "9")) %>%
mutate(All = "All") %>%
mutate(All = factor(All)) %>%
mutate(REASON_FOR_NO_SURGERY_F = fct_recode(REASON_FOR_NO_SURGERY,
"Surg performed" = "0",
"Surg not recommended" = "1",
"No surg due to pt factors" = "2",
"No surg, pt died" = "5",
"Surg rec, not done" = "6",
"Surg rec, pt refused" = "7",
"Surg rec, unk if done" = "8",
"Unknown" = "9")) %>%
mutate(SURGERY_YN = ifelse(REASON_FOR_NO_SURGERY == "0",
"Yes",
ifelse(REASON_FOR_NO_SURGERY == "9",
"Ukn",
"No"))) %>%
mutate(SURG_TF = case_when(SURGERY_YN == "Yes" ~ TRUE,
SURGERY_YN == "No" ~ FALSE,
TRUE ~ NA)) %>%
mutate(REASON_FOR_NO_RADIATION_F = fct_recode(REASON_FOR_NO_RADIATION,
"Rad performed" = "0",
"Rad not recommended" = "1",
"No Rad due to pt factors" = "2",
"No Rad, pt died" = "5",
"Rad rec, not done" = "6",
"Rad rec, pt refused" = "7",
"Rad rec, unk if done" = "8",
"Unknown" = "9")) %>%
mutate(RADIATION_YN = ifelse(REASON_FOR_NO_RADIATION == "0",
"Yes",
ifelse(REASON_FOR_NO_RADIATION == "9",
NA,
"No"))) %>%
mutate(SURGRAD_SEQ_F = fct_recode(RX_SUMM_SURGRAD_SEQ,
"None or Surg or Rad" = "0",
"Rad before Surg" = "2",
"Surg before Rad" = "3",
"Rad before and after Surg" = "4",
"Intraop Rad" = "5",
"Intraop Rad plus other" = "6",
"Unknown" = "9")) %>%
mutate(SURG_RAD_SEQ = ifelse(SURGERY_YN == "Yes" & RX_SUMM_SURGRAD_SEQ == "0",
"Surg Alone",
ifelse(RADIATION_YN == "Yes" & RX_SUMM_SURGRAD_SEQ == "0",
"Rad Alone",
ifelse(SURGERY_YN == "No" & RADIATION_YN == "No" & RX_SUMM_SURGRAD_SEQ == "0",
"No Treatment",
ifelse(RX_SUMM_SURGRAD_SEQ == "2",
"Rad then Surg",
ifelse(RX_SUMM_SURGRAD_SEQ == "3",
"Surg then Rad",
ifelse(RX_SUMM_SURGRAD_SEQ == "4",
"Rad before and after Surg",
"Other"))))))) %>%
mutate(SURG_RAD_SEQ = fct_relevel(SURG_RAD_SEQ,
"Surg Alone",
"Surg then Rad",
"Rad Alone")) %>%
mutate(CHEMO_YN = fct_collapse(RX_SUMM_CHEMO,
"No" = c("00", "82", "85", "86", "87"),
"Yes" = c("01", "02", "03"),
"Ukn" = c("88", "99"))) %>%
mutate(SURG_RAD_SEQ_C = ifelse(SURGERY_YN == "Yes" & RX_SUMM_SURGRAD_SEQ == "0" & CHEMO_YN == "No",
"Surg, No rad, No Chemo",
ifelse(RADIATION_YN == "Yes" & RX_SUMM_SURGRAD_SEQ == "0" & CHEMO_YN == "No",
"Rad, No Surg, No Chemo",
ifelse(SURGERY_YN == "No" & RADIATION_YN == "No" & RX_SUMM_SURGRAD_SEQ == "0" & CHEMO_YN == "No",
"No Surg, No Rad, No Chemo",
ifelse(RX_SUMM_SURGRAD_SEQ == "2" & CHEMO_YN == "No",
"Rad then Surg, No Chemo",
ifelse(RX_SUMM_SURGRAD_SEQ == "3" & CHEMO_YN == "No",
"Surg then Rad, No Chemo",
ifelse(RX_SUMM_SURGRAD_SEQ == "4" & CHEMO_YN == "No",
"Rad before and after Surg, No Chemo",
ifelse(SURGERY_YN == "Yes" & RX_SUMM_SURGRAD_SEQ == "0" & CHEMO_YN == "Yes",
"Surg, No rad, Yes Chemo",
ifelse(RADIATION_YN == "Yes" & RX_SUMM_SURGRAD_SEQ == "0" & CHEMO_YN == "Yes",
"Rad, No Surg, Yes Chemo",
ifelse(SURGERY_YN == "No" & RADIATION_YN == "No" & RX_SUMM_SURGRAD_SEQ == "0" & CHEMO_YN == "Yes",
"No Surg, No Rad, Yes Chemo",
ifelse(RX_SUMM_SURGRAD_SEQ == "2" & CHEMO_YN == "Yes",
"Rad then Surg, Yes Chemo",
ifelse(RX_SUMM_SURGRAD_SEQ == "3" & CHEMO_YN == "Yes",
"Surg then Rad, Yes Chemo",
ifelse(RX_SUMM_SURGRAD_SEQ == "4" & CHEMO_YN == "Yes",
"Rad before and after Surg, Yes Chemo",
"Other"))))))))))))) %>%
mutate(SURG_RAD_SEQ_C = fct_infreq(SURG_RAD_SEQ_C)) %>%
mutate(T_SIZE = as.numeric(TUMOR_SIZE)) %>%
mutate(T_SIZE = ifelse(T_SIZE == 0,
"No Tumor",
ifelse(T_SIZE > 0 & T_SIZE < 10 | T_SIZE == 991,
"< 1 cm",
ifelse(T_SIZE >= 10 & T_SIZE < 20 | T_SIZE == 992,
"1-2 cm",
ifelse(T_SIZE >= 20 & T_SIZE < 30 | T_SIZE == 993,
"2-3 cm",
ifelse(T_SIZE >= 30 & T_SIZE < 40 | T_SIZE == 994,
"3-4 cm",
ifelse(T_SIZE >= 40 & T_SIZE < 50 | T_SIZE == 995,
"4-5 cm",
ifelse(T_SIZE >= 50 & T_SIZE < 60 | T_SIZE == 996,
"5-6 cm",
ifelse(T_SIZE >= 60 & T_SIZE <= 987 |
T_SIZE == 980 | T_SIZE == 989 |
T_SIZE == 997,
">6 cm",
ifelse(T_SIZE == 988 | T_SIZE == 999,
"NA_unk",
"Microscopic focus")))))))))) %>%
mutate(T_SIZE = factor(T_SIZE)) %>%
mutate(T_SIZE = fct_relevel(T_SIZE,
"No Tumor", "Microscopic focus", "< 1 cm", "1-2 cm", "2-3 cm", "3-4 cm",
"4-5 cm", "5-6 cm", ">6 cm", "NA_unk")) %>%
mutate(mets_at_dx = case_when(CS_METS_DX_LUNG == "1" ~ "Lung",
CS_METS_DX_BONE == "1" ~ "Bone",
CS_METS_DX_BRAIN == "1" ~ "Brain",
CS_METS_DX_LIVER == "1" ~ "Liver",
TRUE ~ "None/Other/Unk/NA")) %>%
mutate(MEDICAID_EXPN_CODE = fct_recode(MEDICAID_EXPN_CODE,
"Non-Expansion State" = "0",
"Jan 2014 Expansion States" = "1",
"Early Expansion States (2010-13)" = "2",
"Late Expansion States (> Jan 2014)" = "3",
"Suppressed for Ages 0 - 39" = "9")) %>%
mutate(EXPN_GROUP = case_when(MEDICAID_EXPN_CODE %in% c("Jan 2014 Expansion States") &
YEAR_OF_DIAGNOSIS %in% c("2014", "2015") ~ "Post-Expansion",
MEDICAID_EXPN_CODE %in% c("Jan 2014 Expansion States") &
YEAR_OF_DIAGNOSIS %in%
c("2004", "2005", "2006", "2007", "2008",
"2009", "2010", "2011", "2012", "2013") ~ "Pre-Expansion",
MEDICAID_EXPN_CODE %in% c("Early Expansion States (2010-13)") &
YEAR_OF_DIAGNOSIS %in% c("2010", "2011", "2012", "2013", "2014", "2015") ~ "Post-Expansion",
MEDICAID_EXPN_CODE %in% c("Early Expansion States (2010-13)") &
YEAR_OF_DIAGNOSIS %in% c("2004", "2005", "2006", "2007", "2008", "2009") ~ "Pre-Expansion",
MEDICAID_EXPN_CODE %in% c("Non-Expansion State") ~ "Pre-Expansion",
MEDICAID_EXPN_CODE %in% c("Late Expansion States (> Jan 2014)") ~ "Pre-Expansion",
MEDICAID_EXPN_CODE %in% c("Late Expansion States (> Jan 2014)") &
YEAR_OF_DIAGNOSIS %in% c("2014", "2015") ~ "Exclude",
MEDICAID_EXPN_CODE == "Suppressed for Ages 0 - 39" ~ "Exclude")) %>%
mutate(pre_2014 = YEAR_OF_DIAGNOSIS %in% c("2004", "2005", "2006", "2007", "2008",
"2009", "2010", "2011", "2012", "2013")) %>%
mutate(mets_at_dx_F = ifelse(mets_at_dx == "None/Other/Unk/NA", FALSE, TRUE)) %>%
mutate(Tx_YN = ifelse(SURG_RAD_SEQ == "No Treatment" & CHEMO_YN == "No", FALSE,
ifelse(CHEMO_YN == "Ukn", NA,
TRUE)))
fact_vars_2 <- c("FACILITY_TYPE_F", "FACILITY_LOCATION_F", "AGE_F", "SEX_F", "RACE_F",
"HISPANIC", "INSURANCE_F", "INCOME_F", "EDUCATION_F", "U_R_F",
"CDCC_TOTAL_BEST", "CLASS_OF_CASE_F", "YEAR_OF_DIAGNOSIS", "PRIMARY_SITE", "HISTOLOGY",
"BEHAVIOR", "GRADE_F", "TNM_CLIN_T", "TNM_CLIN_N", "TNM_CLIN_M",
"TNM_CLIN_STAGE_GROUP", "TNM_PATH_T", "TNM_PATH_N", "TNM_PATH_M", "TNM_PATH_STAGE_GROUP",
"MARGINS", "READM_HOSP_30_DAYS_F", "RX_SUMM_RADIATION_F", "PUF_30_DAY_MORT_CD_F",
"PUF_90_DAY_MORT_CD_F", "LYMPH_VASCULAR_INVASION_F", "RX_HOSP_SURG_APPR_2010_F", "mets_at_dx")
dat <- dat %>%
mutate_at(fact_vars_2, funs(factor(.)))
Kaplan Meier Analysis
All
uni_var(test_var = "All", data_imp = data)
_________________________________________________
## All
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ All, data = data)
n events median 0.95LCL 0.95UCL
1360 329 142 128 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ All, data = data)
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1184 48 0.963 0.00528 0.952 0.973
24 1032 52 0.919 0.00783 0.903 0.934
36 864 40 0.880 0.00957 0.862 0.899
48 724 34 0.843 0.01107 0.822 0.865
60 592 44 0.788 0.01309 0.763 0.815
120 125 95 0.586 0.02187 0.545 0.631
## Univariable Cox Proportional Hazard Model for: All
[1] "Only one level, no Cox model performed"
## Unadjusted Kaplan Meier Overall Survival Curve for: All



Facility Type
uni_var(test_var = "FACILITY_TYPE_F", data_imp = data)
_________________________________________________
## FACILITY_TYPE_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ FACILITY_TYPE_F, data = data)
14 observations deleted due to missingness
n events median 0.95LCL 0.95UCL
FACILITY_TYPE_F=Community Cancer Program 31 8 NA 79.8 NA
FACILITY_TYPE_F=Comprehensive Comm Ca Program 462 126 128 115.9 NA
FACILITY_TYPE_F=Academic/Research Program 654 144 155 126.1 NA
FACILITY_TYPE_F=Integrated Network Ca Program 199 51 131 113.8 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ FACILITY_TYPE_F, data = data)
14 observations deleted due to missingness
FACILITY_TYPE_F=Community Cancer Program
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 26 1 0.963 0.0363 0.894 1.000
24 23 1 0.926 0.0504 0.832 1.000
36 19 1 0.882 0.0645 0.764 1.000
48 15 0 0.882 0.0645 0.764 1.000
60 14 1 0.823 0.0827 0.676 1.000
120 5 4 0.525 0.1366 0.316 0.875
FACILITY_TYPE_F=Comprehensive Comm Ca Program
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 393 24 0.946 0.0108 0.925 0.967
24 345 18 0.901 0.0145 0.873 0.930
36 294 14 0.862 0.0172 0.829 0.897
48 250 17 0.811 0.0203 0.772 0.851
60 197 16 0.753 0.0234 0.708 0.800
120 34 31 0.555 0.0384 0.484 0.635
FACILITY_TYPE_F=Academic/Research Program
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 581 15 0.976 0.00624 0.963 0.988
24 505 24 0.933 0.01037 0.913 0.954
36 417 20 0.893 0.01323 0.868 0.919
48 352 10 0.870 0.01476 0.842 0.900
60 294 20 0.818 0.01792 0.784 0.854
120 64 48 0.597 0.03241 0.537 0.664
FACILITY_TYPE_F=Integrated Network Ca Program
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 173 8 0.957 0.0147 0.929 0.987
24 148 9 0.904 0.0221 0.862 0.949
36 126 5 0.871 0.0258 0.822 0.923
48 100 7 0.818 0.0311 0.760 0.882
60 80 7 0.758 0.0362 0.691 0.833
120 19 12 0.596 0.0533 0.500 0.710
## Univariable Cox Proportional Hazard Model for: FACILITY_TYPE_F
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ FACILITY_TYPE_F, data = data)
n= 1346, number of events= 329
(14 observations deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
FACILITY_TYPE_FComprehensive Comm Ca Program 0.09863 1.10366 0.36480 0.270 0.787
FACILITY_TYPE_FAcademic/Research Program -0.16094 0.85135 0.36339 -0.443 0.658
FACILITY_TYPE_FIntegrated Network Ca Program 0.03928 1.04006 0.38045 0.103 0.918
exp(coef) exp(-coef) lower .95 upper .95
FACILITY_TYPE_FComprehensive Comm Ca Program 1.1037 0.9061 0.5399 2.256
FACILITY_TYPE_FAcademic/Research Program 0.8513 1.1746 0.4176 1.735
FACILITY_TYPE_FIntegrated Network Ca Program 1.0401 0.9615 0.4934 2.192
Concordance= 0.543 (se = 0.016 )
Rsquare= 0.004 (max possible= 0.957 )
Likelihood ratio test= 4.81 on 3 df, p=0.1859
Wald test = 4.8 on 3 df, p=0.1873
Score (logrank) test = 4.82 on 3 df, p=0.1854
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: FACILITY_TYPE_F



Facility Location
uni_var(test_var = "FACILITY_LOCATION_F", data_imp = data)
_________________________________________________
## FACILITY_LOCATION_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ FACILITY_LOCATION_F, data = data)
14 observations deleted due to missingness
n events median 0.95LCL 0.95UCL
FACILITY_LOCATION_F=New England 59 18 111 70.2 NA
FACILITY_LOCATION_F=Middle Atlantic 231 52 NA 115.0 NA
FACILITY_LOCATION_F=South Atlantic 255 51 NA 126.1 NA
FACILITY_LOCATION_F=East North Central 222 60 133 105.8 NA
FACILITY_LOCATION_F=East South Central 89 20 133 110.7 NA
FACILITY_LOCATION_F=West North Central 141 38 125 84.9 NA
FACILITY_LOCATION_F=West South Central 99 26 NA 125.6 NA
FACILITY_LOCATION_F=Mountain 79 25 128 106.7 NA
FACILITY_LOCATION_F=Pacific 171 39 150 149.6 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ FACILITY_LOCATION_F, data = data)
14 observations deleted due to missingness
FACILITY_LOCATION_F=New England
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 52 2 0.964 0.0253 0.915 1.000
24 43 3 0.905 0.0404 0.829 0.988
36 37 0 0.905 0.0404 0.829 0.988
48 30 3 0.823 0.0583 0.716 0.946
60 21 4 0.700 0.0756 0.567 0.865
120 4 5 0.429 0.1213 0.247 0.747
FACILITY_LOCATION_F=Middle Atlantic
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 213 4 0.982 0.00896 0.965 1.000
24 180 12 0.923 0.01846 0.888 0.960
36 146 6 0.890 0.02227 0.847 0.935
48 118 8 0.837 0.02768 0.785 0.893
60 98 6 0.793 0.03150 0.734 0.858
120 19 16 0.577 0.05660 0.476 0.700
FACILITY_LOCATION_F=South Atlantic
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 224 7 0.971 0.0108 0.950 0.992
24 207 3 0.957 0.0132 0.932 0.984
36 178 8 0.918 0.0186 0.883 0.955
48 152 6 0.886 0.0221 0.843 0.930
60 128 8 0.836 0.0271 0.784 0.890
120 28 16 0.651 0.0493 0.561 0.755
FACILITY_LOCATION_F=East North Central
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 198 10 0.954 0.0143 0.926 0.982
24 178 6 0.924 0.0183 0.889 0.960
36 151 7 0.884 0.0229 0.840 0.930
48 125 5 0.852 0.0261 0.803 0.905
60 105 8 0.795 0.0313 0.736 0.859
120 18 22 0.537 0.0545 0.440 0.655
FACILITY_LOCATION_F=East South Central
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 74 2 0.976 0.0165 0.945 1.000
24 67 3 0.935 0.0283 0.881 0.992
36 54 4 0.872 0.0401 0.797 0.955
48 48 1 0.856 0.0427 0.776 0.944
60 36 3 0.795 0.0521 0.700 0.904
120 7 6 0.604 0.0826 0.461 0.789
FACILITY_LOCATION_F=West North Central
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 119 4 0.970 0.0150 0.941 0.999
24 98 9 0.892 0.0284 0.838 0.949
36 80 3 0.861 0.0325 0.800 0.927
48 59 7 0.781 0.0413 0.704 0.867
60 47 2 0.753 0.0444 0.671 0.845
120 11 9 0.536 0.0719 0.412 0.697
FACILITY_LOCATION_F=West South Central
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 81 5 0.945 0.0241 0.899 0.993
24 73 4 0.897 0.0327 0.835 0.963
36 66 3 0.860 0.0377 0.789 0.937
48 59 2 0.833 0.0411 0.756 0.917
60 46 5 0.757 0.0494 0.666 0.860
120 8 6 0.622 0.0662 0.505 0.767
FACILITY_LOCATION_F=Mountain
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 70 4 0.946 0.0261 0.896 0.999
24 60 3 0.904 0.0346 0.839 0.974
36 51 3 0.856 0.0425 0.776 0.943
48 44 2 0.820 0.0476 0.732 0.919
60 38 3 0.761 0.0550 0.661 0.877
120 12 8 0.533 0.0805 0.397 0.717
FACILITY_LOCATION_F=Pacific
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 142 10 0.939 0.0188 0.903 0.976
24 115 9 0.876 0.0267 0.825 0.930
36 93 6 0.828 0.0318 0.768 0.892
48 82 0 0.828 0.0318 0.768 0.892
60 66 5 0.772 0.0382 0.700 0.850
120 15 7 0.640 0.0577 0.536 0.763
## Univariable Cox Proportional Hazard Model for: FACILITY_LOCATION_F
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ FACILITY_LOCATION_F, data = data)
n= 1346, number of events= 329
(14 observations deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
FACILITY_LOCATION_FMiddle Atlantic -0.4202 0.6569 0.2737 -1.536 0.1247
FACILITY_LOCATION_FSouth Atlantic -0.6586 0.5176 0.2745 -2.400 0.0164 *
FACILITY_LOCATION_FEast North Central -0.3203 0.7259 0.2690 -1.191 0.2337
FACILITY_LOCATION_FEast South Central -0.4575 0.6329 0.3252 -1.407 0.1594
FACILITY_LOCATION_FWest North Central -0.0866 0.9170 0.2862 -0.303 0.7622
FACILITY_LOCATION_FWest South Central -0.3416 0.7106 0.3069 -1.113 0.2657
FACILITY_LOCATION_FMountain -0.2283 0.7959 0.3097 -0.737 0.4610
FACILITY_LOCATION_FPacific -0.3479 0.7062 0.2852 -1.220 0.2226
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
FACILITY_LOCATION_FMiddle Atlantic 0.6569 1.522 0.3842 1.1232
FACILITY_LOCATION_FSouth Atlantic 0.5176 1.932 0.3023 0.8863
FACILITY_LOCATION_FEast North Central 0.7259 1.378 0.4285 1.2298
FACILITY_LOCATION_FEast South Central 0.6329 1.580 0.3346 1.1970
FACILITY_LOCATION_FWest North Central 0.9170 1.090 0.5233 1.6069
FACILITY_LOCATION_FWest South Central 0.7106 1.407 0.3894 1.2969
FACILITY_LOCATION_FMountain 0.7959 1.256 0.4338 1.4603
FACILITY_LOCATION_FPacific 0.7062 1.416 0.4038 1.2351
Concordance= 0.547 (se = 0.018 )
Rsquare= 0.008 (max possible= 0.957 )
Likelihood ratio test= 10.59 on 8 df, p=0.2262
Wald test = 10.59 on 8 df, p=0.2263
Score (logrank) test = 10.75 on 8 df, p=0.2164
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: FACILITY_LOCATION_F



Facility Geography
uni_var(test_var = "FACILITY_GEOGRAPHY", data_imp = data)
_________________________________________________
## FACILITY_GEOGRAPHY
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ FACILITY_GEOGRAPHY, data = data)
14 observations deleted due to missingness
n events median 0.95LCL 0.95UCL
FACILITY_GEOGRAPHY=Northeast 290 70 NA 111 NA
FACILITY_GEOGRAPHY=South 354 77 NA 126 NA
FACILITY_GEOGRAPHY=Midwest 452 118 126 111 NA
FACILITY_GEOGRAPHY=West 250 64 150 128 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ FACILITY_GEOGRAPHY, data = data)
14 observations deleted due to missingness
FACILITY_GEOGRAPHY=Northeast
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 265 6 0.978 0.00875 0.961 0.996
24 223 15 0.920 0.01682 0.887 0.953
36 183 6 0.893 0.01957 0.856 0.932
48 148 11 0.835 0.02496 0.787 0.885
60 119 10 0.776 0.02940 0.720 0.836
120 23 21 0.549 0.05180 0.456 0.660
FACILITY_GEOGRAPHY=South
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 305 12 0.964 0.0103 0.944 0.984
24 280 7 0.941 0.0132 0.915 0.967
36 244 11 0.902 0.0170 0.869 0.936
48 211 8 0.871 0.0197 0.834 0.911
60 174 13 0.813 0.0240 0.768 0.862
120 36 22 0.640 0.0407 0.565 0.725
FACILITY_GEOGRAPHY=Midwest
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 391 16 0.963 0.0091 0.945 0.981
24 343 18 0.917 0.0137 0.890 0.944
36 285 14 0.875 0.0170 0.843 0.909
48 232 13 0.833 0.0198 0.795 0.873
60 188 13 0.783 0.0230 0.739 0.829
120 36 37 0.549 0.0387 0.478 0.630
FACILITY_GEOGRAPHY=West
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 212 14 0.941 0.0153 0.912 0.972
24 175 12 0.885 0.0212 0.845 0.928
36 144 9 0.837 0.0255 0.788 0.888
48 126 2 0.824 0.0267 0.773 0.878
60 104 8 0.767 0.0315 0.708 0.832
120 27 15 0.591 0.0493 0.502 0.696
## Univariable Cox Proportional Hazard Model for: FACILITY_GEOGRAPHY
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ FACILITY_GEOGRAPHY, data = data)
n= 1346, number of events= 329
(14 observations deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
FACILITY_GEOGRAPHYSouth -0.23411 0.79128 0.16534 -1.416 0.157
FACILITY_GEOGRAPHYMidwest 0.05075 1.05206 0.15096 0.336 0.737
FACILITY_GEOGRAPHYWest 0.02548 1.02581 0.17315 0.147 0.883
exp(coef) exp(-coef) lower .95 upper .95
FACILITY_GEOGRAPHYSouth 0.7913 1.2638 0.5723 1.094
FACILITY_GEOGRAPHYMidwest 1.0521 0.9505 0.7826 1.414
FACILITY_GEOGRAPHYWest 1.0258 0.9748 0.7306 1.440
Concordance= 0.526 (se = 0.017 )
Rsquare= 0.003 (max possible= 0.957 )
Likelihood ratio test= 4.41 on 3 df, p=0.2201
Wald test = 4.23 on 3 df, p=0.2375
Score (logrank) test = 4.26 on 3 df, p=0.2351
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: FACILITY_GEOGRAPHY



Age Group
uni_var(test_var = "AGE_F", data_imp = data)
_________________________________________________
## AGE_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ AGE_F, data = data)
n events median 0.95LCL 0.95UCL
AGE_F=(0,54] 144 10 NA NA NA
AGE_F=(54,64] 254 25 NA 155 NA
AGE_F=(64,74] 421 68 149.6 132 NA
AGE_F=(74,100] 541 226 81.8 73 95.5
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ AGE_F, data = data)
AGE_F=(0,54]
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 127 1 0.993 0.00697 0.979 1.000
24 119 1 0.985 0.01060 0.964 1.000
36 106 1 0.976 0.01358 0.950 1.000
48 93 0 0.976 0.01358 0.950 1.000
60 76 4 0.930 0.02586 0.881 0.983
120 24 2 0.897 0.03449 0.832 0.967
AGE_F=(54,64]
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 227 3 0.988 0.00695 0.974 1.000
24 209 6 0.961 0.01288 0.936 0.986
36 176 2 0.950 0.01475 0.922 0.979
48 151 3 0.933 0.01755 0.899 0.968
60 126 2 0.920 0.01961 0.882 0.959
120 37 6 0.863 0.02906 0.808 0.922
AGE_F=(64,74]
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 370 7 0.983 0.00653 0.970 0.995
24 319 11 0.952 0.01111 0.930 0.974
36 265 13 0.911 0.01531 0.882 0.942
48 228 2 0.904 0.01601 0.873 0.936
60 190 8 0.871 0.01924 0.834 0.910
120 37 22 0.684 0.04208 0.606 0.772
AGE_F=(74,100]
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 460 37 0.928 0.0115 0.905 0.950
24 385 34 0.856 0.0159 0.825 0.888
36 317 24 0.798 0.0187 0.762 0.835
48 252 29 0.720 0.0218 0.679 0.764
60 200 30 0.630 0.0245 0.584 0.680
120 27 65 0.306 0.0347 0.245 0.382
## Univariable Cox Proportional Hazard Model for: AGE_F
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ AGE_F, data = data)
n= 1360, number of events= 329
coef exp(coef) se(coef) z Pr(>|z|)
AGE_F(54,64] 0.4320 1.5404 0.3743 1.154 0.24839
AGE_F(64,74] 1.0943 2.9870 0.3392 3.226 0.00126 **
AGE_F(74,100] 2.2006 9.0307 0.3242 6.787 1.14e-11 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
AGE_F(54,64] 1.540 0.6492 0.7397 3.208
AGE_F(64,74] 2.987 0.3348 1.5363 5.808
AGE_F(74,100] 9.031 0.1107 4.7833 17.050
Concordance= 0.685 (se = 0.017 )
Rsquare= 0.124 (max possible= 0.956 )
Likelihood ratio test= 180.1 on 3 df, p=0
Wald test = 147 on 3 df, p=0
Score (logrank) test = 182.2 on 3 df, p=0
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: AGE_F



Age Group
uni_var(test_var = "AGE_40", data_imp = data)
_________________________________________________
## AGE_40
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ AGE_40, data = data)
n events median 0.95LCL 0.95UCL
AGE_40=(0,40] 18 1 NA NA NA
AGE_40=(40,100] 1342 328 142 126 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ AGE_40, data = data)
AGE_40=(0,40]
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 14 0 1.000 0.0000 1.000 1
24 13 1 0.929 0.0688 0.803 1
36 10 0 0.929 0.0688 0.803 1
48 9 0 0.929 0.0688 0.803 1
60 9 0 0.929 0.0688 0.803 1
120 3 0 0.929 0.0688 0.803 1
AGE_40=(40,100]
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1170 48 0.962 0.00534 0.952 0.973
24 1019 51 0.918 0.00788 0.903 0.934
36 854 40 0.880 0.00965 0.861 0.899
48 715 34 0.842 0.01116 0.821 0.864
60 583 44 0.787 0.01321 0.761 0.813
120 122 95 0.581 0.02214 0.540 0.626
## Univariable Cox Proportional Hazard Model for: AGE_40
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ AGE_40, data = data)
n= 1360, number of events= 329
coef exp(coef) se(coef) z Pr(>|z|)
AGE_40(40,100] 1.637 5.138 1.002 1.634 0.102
exp(coef) exp(-coef) lower .95 upper .95
AGE_40(40,100] 5.138 0.1946 0.7212 36.61
Concordance= 0.504 (se = 0.003 )
Rsquare= 0.004 (max possible= 0.956 )
Likelihood ratio test= 4.94 on 1 df, p=0.02622
Wald test = 2.67 on 1 df, p=0.1023
Score (logrank) test = 3.32 on 1 df, p=0.06842
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: AGE_40



Gender
uni_var(test_var = "SEX_F", data_imp = data)
_________________________________________________
## SEX_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SEX_F, data = data)
n events median 0.95LCL 0.95UCL
SEX_F=Male 261 86 82.8 73.6 NA
SEX_F=Female 1099 243 155.4 130.5 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SEX_F, data = data)
SEX_F=Male
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 223 11 0.956 0.0131 0.930 0.982
24 185 16 0.883 0.0213 0.842 0.925
36 144 13 0.816 0.0266 0.766 0.870
48 115 12 0.744 0.0314 0.684 0.808
60 89 12 0.662 0.0357 0.596 0.736
120 17 20 0.435 0.0494 0.348 0.544
SEX_F=Female
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 961 37 0.964 0.00574 0.953 0.976
24 847 36 0.927 0.00826 0.911 0.943
36 720 27 0.895 0.01000 0.876 0.915
48 609 22 0.866 0.01144 0.844 0.889
60 503 32 0.817 0.01370 0.790 0.844
120 108 75 0.619 0.02419 0.573 0.668
## Univariable Cox Proportional Hazard Model for: SEX_F
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SEX_F, data = data)
n= 1360, number of events= 329
coef exp(coef) se(coef) z Pr(>|z|)
SEX_FFemale -0.6336 0.5307 0.1260 -5.029 4.93e-07 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
SEX_FFemale 0.5307 1.884 0.4146 0.6793
Concordance= 0.555 (se = 0.012 )
Rsquare= 0.017 (max possible= 0.956 )
Likelihood ratio test= 22.71 on 1 df, p=1.882e-06
Wald test = 25.29 on 1 df, p=4.927e-07
Score (logrank) test = 26.14 on 1 df, p=3.175e-07
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: SEX_F



RACE_F
uni_var(test_var = "RACE_F", data_imp = data)
_________________________________________________
## RACE_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ RACE_F, data = data)
n events median 0.95LCL 0.95UCL
RACE_F=White 1229 301 142 128.2 NA
RACE_F=Black 25 7 NA 71.5 NA
RACE_F=Other/Unk 35 11 111 97.2 NA
RACE_F=Asian 71 10 NA 108.1 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ RACE_F, data = data)
RACE_F=White
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1075 41 0.965 0.00540 0.954 0.975
24 938 50 0.918 0.00826 0.902 0.934
36 787 36 0.880 0.01005 0.861 0.900
48 653 32 0.842 0.01167 0.819 0.865
60 533 41 0.785 0.01384 0.759 0.813
120 115 85 0.591 0.02241 0.549 0.637
RACE_F=Black
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 21 2 0.918 0.0554 0.816 1.000
24 17 1 0.870 0.0705 0.742 1.000
36 15 0 0.870 0.0705 0.742 1.000
48 13 2 0.754 0.0978 0.585 0.972
60 11 1 0.691 0.1080 0.509 0.939
RACE_F=Other/Unk
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 30 2 0.938 0.0422 0.859 1.000
24 26 1 0.905 0.0523 0.808 1.000
36 20 2 0.824 0.0723 0.694 0.979
48 18 0 0.824 0.0723 0.694 0.979
60 16 1 0.779 0.0815 0.634 0.956
120 3 5 0.363 0.1446 0.166 0.792
RACE_F=Asian
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 58 3 0.953 0.0265 0.903 1.000
24 51 0 0.953 0.0265 0.903 1.000
36 42 2 0.912 0.0380 0.841 0.990
48 40 0 0.912 0.0380 0.841 0.990
60 32 1 0.887 0.0446 0.804 0.979
120 7 4 0.663 0.1136 0.474 0.927
## Univariable Cox Proportional Hazard Model for: RACE_F
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ RACE_F, data = data)
n= 1360, number of events= 329
coef exp(coef) se(coef) z Pr(>|z|)
RACE_FBlack 0.3512 1.4208 0.3828 0.917 0.359
RACE_FOther/Unk 0.1943 1.2145 0.3072 0.633 0.527
RACE_FAsian -0.5282 0.5897 0.3215 -1.643 0.100
exp(coef) exp(-coef) lower .95 upper .95
RACE_FBlack 1.4208 0.7038 0.6709 3.009
RACE_FOther/Unk 1.2145 0.8234 0.6652 2.218
RACE_FAsian 0.5897 1.6959 0.3140 1.107
Concordance= 0.516 (se = 0.009 )
Rsquare= 0.003 (max possible= 0.956 )
Likelihood ratio test= 4.48 on 3 df, p=0.2138
Wald test = 4.06 on 3 df, p=0.2547
Score (logrank) test = 4.15 on 3 df, p=0.2456
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: RACE_F



Hispanic
uni_var(test_var = "HISPANIC", data_imp = data)
_________________________________________________
## HISPANIC
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ HISPANIC, data = data)
n events median 0.95LCL 0.95UCL
HISPANIC=No 1234 294 142 128.2 NA
HISPANIC=Yes 52 9 NA 125.6 NA
HISPANIC=Unknown 74 26 NA 97.2 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ HISPANIC, data = data)
HISPANIC=No
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1069 44 0.962 0.00559 0.951 0.973
24 929 44 0.921 0.00814 0.905 0.937
36 773 36 0.882 0.01002 0.863 0.902
48 645 29 0.847 0.01160 0.824 0.870
60 525 40 0.790 0.01385 0.763 0.818
120 106 88 0.575 0.02383 0.530 0.624
HISPANIC=Yes
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 47 0 1.000 0.0000 1.000 1.000
24 41 4 0.913 0.0416 0.835 0.998
36 36 1 0.890 0.0467 0.803 0.986
48 28 1 0.864 0.0518 0.768 0.972
60 23 1 0.831 0.0595 0.722 0.956
120 9 0 0.831 0.0595 0.722 0.956
HISPANIC=Unknown
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 68 4 0.945 0.0268 0.894 0.999
24 62 4 0.888 0.0372 0.818 0.964
36 55 3 0.843 0.0435 0.762 0.933
48 51 4 0.782 0.0500 0.690 0.886
60 44 3 0.736 0.0537 0.637 0.849
120 10 7 0.571 0.0706 0.448 0.728
## Univariable Cox Proportional Hazard Model for: HISPANIC
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ HISPANIC, data = data)
n= 1360, number of events= 329
coef exp(coef) se(coef) z Pr(>|z|)
HISPANICYes -0.4176 0.6586 0.3385 -1.234 0.217
HISPANICUnknown 0.1136 1.1203 0.2050 0.554 0.580
exp(coef) exp(-coef) lower .95 upper .95
HISPANICYes 0.6586 1.5184 0.3392 1.279
HISPANICUnknown 1.1203 0.8927 0.7496 1.674
Concordance= 0.514 (se = 0.009 )
Rsquare= 0.002 (max possible= 0.956 )
Likelihood ratio test= 2.12 on 2 df, p=0.3459
Wald test = 1.9 on 2 df, p=0.3865
Score (logrank) test = 1.93 on 2 df, p=0.3816
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: HISPANIC



Insurance Status
uni_var(test_var = "INSURANCE_F", data_imp = data)
_________________________________________________
## INSURANCE_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ INSURANCE_F, data = data)
n events median 0.95LCL 0.95UCL
INSURANCE_F=Private 453 54 NA 155.4 NA
INSURANCE_F=None 23 4 NA 90.3 NA
INSURANCE_F=Medicaid 22 3 NA NA NA
INSURANCE_F=Medicare 838 265 110 97.4 125
INSURANCE_F=Other Government 8 0 NA NA NA
INSURANCE_F=Unknown 16 3 NA 105.8 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ INSURANCE_F, data = data)
INSURANCE_F=Private
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 399 6 0.986 0.00574 0.975 0.997
24 363 13 0.952 0.01066 0.932 0.974
36 314 5 0.938 0.01220 0.915 0.963
48 269 6 0.919 0.01426 0.892 0.948
60 224 6 0.897 0.01658 0.865 0.930
120 57 13 0.812 0.02822 0.758 0.869
INSURANCE_F=None
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 18 0 1.000 0.0000 1.000 1
24 17 0 1.000 0.0000 1.000 1
36 13 1 0.929 0.0688 0.803 1
48 12 0 0.929 0.0688 0.803 1
60 11 1 0.851 0.0973 0.680 1
120 3 2 0.662 0.1402 0.437 1
INSURANCE_F=Medicaid
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 19 1 0.955 0.0444 0.871 1
24 17 0 0.955 0.0444 0.871 1
36 14 0 0.955 0.0444 0.871 1
48 11 2 0.812 0.1003 0.638 1
60 10 0 0.812 0.1003 0.638 1
120 3 0 0.812 0.1003 0.638 1
INSURANCE_F=Medicare
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 727 40 0.950 0.00773 0.935 0.965
24 615 39 0.896 0.01109 0.875 0.918
36 508 33 0.845 0.01361 0.818 0.872
48 421 26 0.799 0.01558 0.769 0.830
60 338 37 0.724 0.01833 0.689 0.761
120 58 79 0.449 0.02987 0.394 0.512
INSURANCE_F=Other Government
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 6 0 1 0 1 1
24 6 0 1 0 1 1
36 5 0 1 0 1 1
48 3 0 1 0 1 1
60 2 0 1 0 1 1
120 1 0 1 0 1 1
INSURANCE_F=Unknown
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 15 1 0.938 0.0605 0.826 1
24 14 0 0.938 0.0605 0.826 1
36 10 1 0.852 0.0981 0.680 1
48 8 0 0.852 0.0981 0.680 1
60 7 0 0.852 0.0981 0.680 1
120 3 1 0.682 0.1715 0.416 1
## Univariable Cox Proportional Hazard Model for: INSURANCE_F
Loglik converged before variable 4 ; beta may be infinite.
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ INSURANCE_F, data = data)
n= 1360, number of events= 329
coef exp(coef) se(coef) z Pr(>|z|)
INSURANCE_FNone 4.116e-01 1.509e+00 5.183e-01 0.794 0.427
INSURANCE_FMedicaid 1.921e-01 1.212e+00 5.933e-01 0.324 0.746
INSURANCE_FMedicare 1.182e+00 3.259e+00 1.497e-01 7.892 3e-15 ***
INSURANCE_FOther Government -1.328e+01 1.710e-06 9.117e+02 -0.015 0.988
INSURANCE_FUnknown 3.688e-01 1.446e+00 5.936e-01 0.621 0.534
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
INSURANCE_FNone 1.509e+00 6.626e-01 0.5465 4.168
INSURANCE_FMedicaid 1.212e+00 8.252e-01 0.3788 3.877
INSURANCE_FMedicare 3.259e+00 3.068e-01 2.4305 4.371
INSURANCE_FOther Government 1.710e-06 5.849e+05 0.0000 Inf
INSURANCE_FUnknown 1.446e+00 6.916e-01 0.4518 4.628
Concordance= 0.61 (se = 0.015 )
Rsquare= 0.06 (max possible= 0.956 )
Likelihood ratio test= 84.85 on 5 df, p=1.11e-16
Wald test = 66.36 on 5 df, p=5.856e-13
Score (logrank) test = 75.91 on 5 df, p=5.995e-15
Transformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 1 rows containing missing values (geom_errorbar).Removed 6 rows containing missing values (geom_text).Removed 6 rows containing missing values (geom_text).Removed 6 rows containing missing values (geom_text).Removed 6 rows containing missing values (geom_text).Removed 6 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).
## Unadjusted Kaplan Meier Overall Survival Curve for: INSURANCE_F



Overall Survival pre/post-ACA expansion
uni_var(test_var = "EXPN_GROUP", data_imp = no_Excludes)
_________________________________________________
## EXPN_GROUP
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ EXPN_GROUP, data = no_Excludes)
n events median 0.95LCL 0.95UCL
EXPN_GROUP=Post-Expansion 248 36 NA 82.8 NA
EXPN_GROUP=Pre-Expansion 1137 303 142 128.2 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ EXPN_GROUP, data = no_Excludes)
EXPN_GROUP=Post-Expansion
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 206 8 0.965 0.0121 0.942 0.989
24 144 16 0.882 0.0229 0.838 0.928
36 79 6 0.838 0.0280 0.785 0.894
48 52 3 0.797 0.0351 0.731 0.869
60 33 1 0.780 0.0384 0.708 0.859
EXPN_GROUP=Pre-Expansion
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1000 41 0.962 0.00580 0.951 0.974
24 900 41 0.921 0.00835 0.905 0.938
36 799 34 0.885 0.01009 0.865 0.905
48 683 33 0.846 0.01167 0.824 0.870
60 568 44 0.789 0.01376 0.762 0.816
120 125 94 0.586 0.02213 0.545 0.631
## Univariable Cox Proportional Hazard Model for: EXPN_GROUP
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ EXPN_GROUP, data = no_Excludes)
n= 1385, number of events= 339
coef exp(coef) se(coef) z Pr(>|z|)
EXPN_GROUPPre-Expansion -0.2137 0.8076 0.1815 -1.178 0.239
exp(coef) exp(-coef) lower .95 upper .95
EXPN_GROUPPre-Expansion 0.8076 1.238 0.5659 1.153
Concordance= 0.514 (se = 0.01 )
Rsquare= 0.001 (max possible= 0.958 )
Likelihood ratio test= 1.32 on 1 df, p=0.2507
Wald test = 1.39 on 1 df, p=0.239
Score (logrank) test = 1.39 on 1 df, p=0.2381
## Unadjusted Kaplan Meier Overall Survival Curve for: EXPN_GROUP



Education
uni_var(test_var = "EDUCATION_F", data_imp = data)
_________________________________________________
## EDUCATION_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ EDUCATION_F, data = data)
5 observations deleted due to missingness
n events median 0.95LCL 0.95UCL
EDUCATION_F=21% or more 167 43 NA 114 NA
EDUCATION_F=13 - 20.9% 320 72 NA 116 NA
EDUCATION_F=7 - 12.9% 465 132 132 108 NA
EDUCATION_F=Less than 7% 403 81 155 133 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ EDUCATION_F, data = data)
5 observations deleted due to missingness
EDUCATION_F=21% or more
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 145 8 0.949 0.0175 0.916 0.984
24 121 10 0.879 0.0268 0.828 0.933
36 105 4 0.848 0.0301 0.791 0.909
48 90 3 0.823 0.0325 0.762 0.889
60 75 4 0.784 0.0362 0.716 0.859
120 18 12 0.597 0.0576 0.494 0.721
EDUCATION_F=13 - 20.9%
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 275 13 0.957 0.0117 0.934 0.980
24 240 13 0.910 0.0168 0.878 0.944
36 198 7 0.881 0.0196 0.844 0.920
48 171 6 0.853 0.0220 0.811 0.898
60 138 10 0.800 0.0264 0.750 0.853
120 25 20 0.583 0.0491 0.494 0.687
EDUCATION_F=7 - 12.9%
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 401 20 0.955 0.00986 0.936 0.974
24 352 14 0.920 0.01316 0.895 0.946
36 291 20 0.864 0.01735 0.831 0.899
48 242 16 0.813 0.02045 0.774 0.855
60 192 21 0.738 0.02431 0.692 0.787
120 44 35 0.545 0.03483 0.481 0.618
EDUCATION_F=Less than 7%
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 361 7 0.982 0.00689 0.968 0.995
24 317 15 0.939 0.01268 0.914 0.964
36 268 9 0.911 0.01540 0.881 0.941
48 221 8 0.881 0.01810 0.846 0.917
60 187 9 0.843 0.02138 0.802 0.886
120 38 28 0.634 0.04128 0.558 0.721
## Univariable Cox Proportional Hazard Model for: EDUCATION_F
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ EDUCATION_F, data = data)
n= 1355, number of events= 328
(5 observations deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
EDUCATION_F13 - 20.9% -0.0936 0.9106 0.1928 -0.485 0.627
EDUCATION_F7 - 12.9% 0.1585 1.1718 0.1757 0.902 0.367
EDUCATION_FLess than 7% -0.2447 0.7829 0.1888 -1.296 0.195
exp(coef) exp(-coef) lower .95 upper .95
EDUCATION_F13 - 20.9% 0.9106 1.0981 0.6241 1.329
EDUCATION_F7 - 12.9% 1.1718 0.8534 0.8305 1.653
EDUCATION_FLess than 7% 0.7829 1.2773 0.5408 1.133
Concordance= 0.552 (se = 0.017 )
Rsquare= 0.006 (max possible= 0.956 )
Likelihood ratio test= 8.76 on 3 df, p=0.03268
Wald test = 8.7 on 3 df, p=0.03359
Score (logrank) test = 8.78 on 3 df, p=0.03229
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: EDUCATION_F



Urban/Rural
uni_var(test_var = "U_R_F", data_imp = data)
_________________________________________________
## U_R_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ U_R_F, data = data)
40 observations deleted due to missingness
n events median 0.95LCL 0.95UCL
U_R_F=Metro 1106 264 150 128.2 NA
U_R_F=Urban 187 50 133 108.0 NA
U_R_F=Rural 27 6 NA 97.2 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ U_R_F, data = data)
40 observations deleted due to missingness
U_R_F=Metro
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 965 39 0.963 0.00586 0.951 0.974
24 843 39 0.922 0.00850 0.906 0.939
36 709 32 0.884 0.01043 0.864 0.905
48 593 25 0.851 0.01201 0.828 0.875
60 482 40 0.790 0.01456 0.762 0.819
120 105 75 0.593 0.02410 0.547 0.642
U_R_F=Urban
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 164 6 0.966 0.0135 0.940 0.993
24 139 11 0.899 0.0233 0.854 0.946
36 116 7 0.850 0.0284 0.796 0.908
48 99 6 0.805 0.0324 0.744 0.871
60 82 3 0.780 0.0345 0.715 0.850
120 14 15 0.561 0.0582 0.458 0.688
U_R_F=Rural
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 25 0 1.000 0.0000 1.000 1.00
24 24 1 0.960 0.0392 0.886 1.00
36 19 1 0.912 0.0598 0.802 1.00
48 15 1 0.855 0.0787 0.714 1.00
60 13 0 0.855 0.0787 0.714 1.00
120 2 3 0.528 0.1612 0.290 0.96
## Univariable Cox Proportional Hazard Model for: U_R_F
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ U_R_F, data = data)
n= 1320, number of events= 320
(40 observations deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
U_R_FUrban 0.1540 1.1665 0.1544 0.997 0.319
U_R_FRural -0.1929 0.8246 0.4129 -0.467 0.640
exp(coef) exp(-coef) lower .95 upper .95
U_R_FUrban 1.1665 0.8573 0.8618 1.579
U_R_FRural 0.8246 1.2128 0.3671 1.852
Concordance= 0.516 (se = 0.012 )
Rsquare= 0.001 (max possible= 0.955 )
Likelihood ratio test= 1.25 on 2 df, p=0.5341
Wald test = 1.27 on 2 df, p=0.5292
Score (logrank) test = 1.28 on 2 df, p=0.5283
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: U_R_F



Year
uni_var(test_var = "YEAR_OF_DIAGNOSIS", data_imp = data)
_________________________________________________
## YEAR_OF_DIAGNOSIS
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ YEAR_OF_DIAGNOSIS, data = data)
n events median 0.95LCL 0.95UCL
YEAR_OF_DIAGNOSIS=2004 84 29 NA 141.8 NA
YEAR_OF_DIAGNOSIS=2005 89 37 NA 97.4 NA
YEAR_OF_DIAGNOSIS=2006 102 34 NA 124.8 NA
YEAR_OF_DIAGNOSIS=2007 114 43 125.1 112.8 NA
YEAR_OF_DIAGNOSIS=2008 123 39 NA 106.7 NA
YEAR_OF_DIAGNOSIS=2009 110 28 NA 100.4 NA
YEAR_OF_DIAGNOSIS=2010 117 26 NA NA NA
YEAR_OF_DIAGNOSIS=2011 125 29 78.3 78.3 NA
YEAR_OF_DIAGNOSIS=2012 103 16 71.5 68.4 NA
YEAR_OF_DIAGNOSIS=2013 118 24 NA NA NA
YEAR_OF_DIAGNOSIS=2014 121 12 NA NA NA
YEAR_OF_DIAGNOSIS=2015 154 12 NA NA NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ YEAR_OF_DIAGNOSIS, data = data)
YEAR_OF_DIAGNOSIS=2004
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 77 2 0.975 0.0173 0.942 1.000
24 75 1 0.963 0.0212 0.922 1.000
36 71 4 0.911 0.0320 0.851 0.976
48 67 3 0.872 0.0378 0.801 0.949
60 63 4 0.820 0.0436 0.739 0.910
120 38 7 0.716 0.0531 0.619 0.828
YEAR_OF_DIAGNOSIS=2005
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 76 6 0.931 0.0271 0.879 0.986
24 72 4 0.882 0.0351 0.816 0.954
36 70 1 0.870 0.0367 0.801 0.945
48 64 4 0.819 0.0424 0.740 0.907
60 58 6 0.742 0.0487 0.653 0.844
120 37 13 0.563 0.0570 0.462 0.687
YEAR_OF_DIAGNOSIS=2006
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 86 4 0.959 0.0201 0.921 0.999
24 80 3 0.925 0.0273 0.873 0.980
36 74 3 0.889 0.0331 0.827 0.957
48 67 5 0.829 0.0405 0.753 0.912
60 60 4 0.779 0.0450 0.696 0.873
120 36 12 0.607 0.0563 0.506 0.728
YEAR_OF_DIAGNOSIS=2007
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 106 4 0.964 0.0175 0.931 0.999
24 98 6 0.909 0.0275 0.857 0.964
36 94 2 0.890 0.0299 0.833 0.951
48 91 3 0.862 0.0332 0.799 0.929
60 84 6 0.805 0.0383 0.733 0.883
120 14 20 0.553 0.0569 0.452 0.677
YEAR_OF_DIAGNOSIS=2008
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 112 6 0.950 0.0200 0.911 0.990
24 103 3 0.923 0.0247 0.876 0.973
36 94 7 0.859 0.0327 0.797 0.926
48 84 5 0.813 0.0370 0.743 0.888
60 83 0 0.813 0.0370 0.743 0.888
YEAR_OF_DIAGNOSIS=2009
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 99 3 0.971 0.0163 0.940 1.000
24 94 3 0.942 0.0232 0.897 0.988
36 91 1 0.931 0.0251 0.883 0.982
48 83 5 0.879 0.0328 0.817 0.946
60 71 7 0.801 0.0411 0.724 0.885
YEAR_OF_DIAGNOSIS=2010
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 105 4 0.965 0.0173 0.931 0.999
24 95 6 0.909 0.0275 0.857 0.964
36 88 4 0.870 0.0325 0.808 0.936
48 84 1 0.860 0.0337 0.796 0.928
60 78 4 0.818 0.0379 0.748 0.896
YEAR_OF_DIAGNOSIS=2011
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 110 3 0.975 0.0142 0.948 1.000
24 104 4 0.939 0.0223 0.896 0.984
36 101 2 0.921 0.0253 0.873 0.972
48 90 2 0.902 0.0283 0.848 0.959
60 66 12 0.774 0.0420 0.695 0.861
YEAR_OF_DIAGNOSIS=2012
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 91 2 0.979 0.0148 0.950 1.000
24 84 3 0.946 0.0235 0.901 0.993
36 74 5 0.889 0.0333 0.826 0.956
48 63 2 0.864 0.0366 0.795 0.939
60 29 1 0.848 0.0391 0.775 0.929
YEAR_OF_DIAGNOSIS=2013
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 104 7 0.938 0.0226 0.895 0.984
24 92 6 0.882 0.0308 0.824 0.944
36 77 8 0.802 0.0390 0.729 0.882
48 31 3 0.750 0.0467 0.664 0.848
YEAR_OF_DIAGNOSIS=2014
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 96 4 0.963 0.0183 0.928 0.999
24 81 5 0.911 0.0285 0.857 0.968
36 30 2 0.888 0.0321 0.827 0.953
YEAR_OF_DIAGNOSIS=2015
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 122 3 0.978 0.0128 0.953 1.000
24 54 8 0.888 0.0329 0.826 0.955
## Univariable Cox Proportional Hazard Model for: YEAR_OF_DIAGNOSIS
X matrix deemed to be singular; variable 12
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ YEAR_OF_DIAGNOSIS, data = data)
n= 1360, number of events= 329
coef exp(coef) se(coef) z Pr(>|z|)
YEAR_OF_DIAGNOSIS2005 0.3673 1.4439 0.2519 1.458 0.14482
YEAR_OF_DIAGNOSIS2006 0.2749 1.3164 0.2582 1.065 0.28707
YEAR_OF_DIAGNOSIS2007 0.4297 1.5369 0.2491 1.725 0.08450 .
YEAR_OF_DIAGNOSIS2008 0.3854 1.4702 0.2554 1.509 0.13125
YEAR_OF_DIAGNOSIS2009 0.2419 1.2737 0.2760 0.877 0.38075
YEAR_OF_DIAGNOSIS2010 0.2608 1.2979 0.2823 0.924 0.35568
YEAR_OF_DIAGNOSIS2011 0.4533 1.5736 0.2769 1.637 0.10157
YEAR_OF_DIAGNOSIS2012 0.2886 1.3346 0.3253 0.887 0.37490
YEAR_OF_DIAGNOSIS2013 0.8195 2.2693 0.2945 2.783 0.00539 **
YEAR_OF_DIAGNOSIS2014 0.4811 1.6178 0.3615 1.331 0.18331
YEAR_OF_DIAGNOSIS2015 0.5897 1.8035 0.3659 1.612 0.10701
YEAR_OF_DIAGNOSIS2016 NA NA 0.0000 NA NA
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
YEAR_OF_DIAGNOSIS2005 1.444 0.6926 0.8812 2.366
YEAR_OF_DIAGNOSIS2006 1.316 0.7597 0.7936 2.184
YEAR_OF_DIAGNOSIS2007 1.537 0.6507 0.9432 2.504
YEAR_OF_DIAGNOSIS2008 1.470 0.6802 0.8913 2.425
YEAR_OF_DIAGNOSIS2009 1.274 0.7851 0.7415 2.188
YEAR_OF_DIAGNOSIS2010 1.298 0.7705 0.7463 2.257
YEAR_OF_DIAGNOSIS2011 1.574 0.6355 0.9145 2.708
YEAR_OF_DIAGNOSIS2012 1.335 0.7493 0.7055 2.525
YEAR_OF_DIAGNOSIS2013 2.269 0.4407 1.2742 4.042
YEAR_OF_DIAGNOSIS2014 1.618 0.6181 0.7965 3.286
YEAR_OF_DIAGNOSIS2015 1.803 0.5545 0.8804 3.694
YEAR_OF_DIAGNOSIS2016 NA NA NA NA
Concordance= 0.542 (se = 0.018 )
Rsquare= 0.007 (max possible= 0.956 )
Likelihood ratio test= 9.57 on 11 df, p=0.5696
Wald test = 9.7 on 11 df, p=0.558
Score (logrank) test = 9.85 on 11 df, p=0.5435
Removed 2 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: YEAR_OF_DIAGNOSIS
This manual palette can handle a maximum of 10 values. You have supplied 12.



Primary Site
uni_var(test_var = "SITE_TEXT", data_imp = data)
_________________________________________________
## SITE_TEXT
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SITE_TEXT, data = data)
n events median 0.95LCL 0.95UCL
SITE_TEXT=C44.2 External ear 2 0 NA NA NA
SITE_TEXT=C44.3 Skin of ear and unspecified parts of face 2 1 7.95 NA NA
SITE_TEXT=C44.4 Skin of scalp and neck 3 0 NA NA NA
SITE_TEXT=C44.5 Skin of trunk 287 86 131.91 81.2 NA
SITE_TEXT=C44.6 Skin of upper limb and shoulder 7 2 NA 50.2 NA
SITE_TEXT=C44.7 Skin of lower limb and hip 12 5 81.81 70.2 NA
SITE_TEXT=C44.8 Overlapping lesion of skin 11 7 32.79 20.3 NA
SITE_TEXT=C44.9 Skin, NOS 19 10 55.92 30.2 NA
SITE_TEXT=C51.0 Labium majus 92 16 NA NA NA
SITE_TEXT=C51.1 Labium minus 15 3 NA 85.4 NA
SITE_TEXT=C51.2 Clitoris 2 0 NA NA NA
SITE_TEXT=C51.8 Overlapping lesion of vulva 60 16 149.62 128.5 NA
SITE_TEXT=C51.9 Vulva, NOS 822 176 155.43 128.2 NA
SITE_TEXT=C52.9 Vagina, NOS 1 0 NA NA NA
SITE_TEXT=C60.2 Body of penis 1 0 NA NA NA
SITE_TEXT=C60.8 Overlapping lesion of penis 2 0 NA NA NA
SITE_TEXT=C60.9 Penis 22 7 108.06 73.2 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SITE_TEXT, data = data)
SITE_TEXT=C44.2 External ear
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 2 0 1 0 1 1
24 2 0 1 0 1 1
36 1 0 1 0 1 1
48 1 0 1 0 1 1
60 1 0 1 0 1 1
120 1 0 1 0 1 1
SITE_TEXT=C44.3 Skin of ear and unspecified parts of face
time n.risk n.event survival std.err lower 95% CI upper 95% CI
SITE_TEXT=C44.4 Skin of scalp and neck
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 3 0 1 0 1 1
24 3 0 1 0 1 1
36 2 0 1 0 1 1
48 2 0 1 0 1 1
60 2 0 1 0 1 1
SITE_TEXT=C44.5 Skin of trunk
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 245 11 0.960 0.0119 0.937 0.983
24 207 15 0.898 0.0191 0.861 0.936
36 165 14 0.833 0.0243 0.787 0.882
48 129 13 0.763 0.0291 0.708 0.822
60 104 11 0.694 0.0330 0.633 0.762
120 17 20 0.503 0.0452 0.422 0.600
SITE_TEXT=C44.6 Skin of upper limb and shoulder
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 6 1 0.857 0.132 0.633 1
24 3 0 0.857 0.132 0.633 1
36 3 0 0.857 0.132 0.633 1
48 3 0 0.857 0.132 0.633 1
60 2 1 0.571 0.249 0.243 1
SITE_TEXT=C44.7 Skin of lower limb and hip
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 10 1 0.909 0.0867 0.7541 1
24 9 1 0.818 0.1163 0.6192 1
36 4 0 0.818 0.1163 0.6192 1
48 4 0 0.818 0.1163 0.6192 1
60 4 0 0.818 0.1163 0.6192 1
120 1 2 0.273 0.2260 0.0537 1
SITE_TEXT=C44.8 Overlapping lesion of skin
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 8 2 0.8 0.126 0.587 1.000
24 5 3 0.5 0.158 0.269 0.929
36 5 0 0.5 0.158 0.269 0.929
48 4 1 0.4 0.155 0.187 0.855
60 4 0 0.4 0.155 0.187 0.855
SITE_TEXT=C44.9 Skin, NOS
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 16 1 0.947 0.0512 0.852 1.000
24 12 2 0.820 0.0953 0.653 1.000
36 8 3 0.615 0.1249 0.413 0.916
48 7 0 0.615 0.1249 0.413 0.916
60 4 3 0.351 0.1354 0.165 0.748
120 2 1 0.264 0.1269 0.103 0.677
SITE_TEXT=C51.0 Labium majus
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 79 2 0.977 0.0159 0.947 1.000
24 68 3 0.938 0.0268 0.887 0.992
36 60 0 0.938 0.0268 0.887 0.992
48 49 2 0.904 0.0350 0.838 0.976
60 47 0 0.904 0.0350 0.838 0.976
120 12 9 0.661 0.0785 0.523 0.834
SITE_TEXT=C51.1 Labium minus
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 13 1 0.929 0.0688 0.803 1
24 11 0 0.929 0.0688 0.803 1
36 10 1 0.844 0.1019 0.666 1
48 8 0 0.844 0.1019 0.666 1
60 7 0 0.844 0.1019 0.666 1
120 1 1 0.703 0.1540 0.458 1
SITE_TEXT=C51.2 Clitoris
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 2 0 1 0 1 1
24 1 0 1 0 1 1
36 1 0 1 0 1 1
48 1 0 1 0 1 1
60 1 0 1 0 1 1
SITE_TEXT=C51.8 Overlapping lesion of vulva
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 49 3 0.946 0.0303 0.888 1.000
24 49 0 0.946 0.0303 0.888 1.000
36 42 3 0.884 0.0447 0.801 0.976
48 36 2 0.840 0.0524 0.743 0.949
60 32 1 0.814 0.0566 0.711 0.933
120 9 5 0.645 0.0833 0.501 0.831
SITE_TEXT=C51.9 Vulva, NOS
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 726 24 0.969 0.00618 0.957 0.981
24 643 27 0.932 0.00922 0.914 0.950
36 545 19 0.902 0.01119 0.880 0.924
48 464 15 0.876 0.01278 0.851 0.901
60 373 27 0.820 0.01580 0.790 0.852
120 80 53 0.620 0.02887 0.566 0.679
SITE_TEXT=C52.9 Vagina, NOS
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1 0 1 0 1 1
24 1 0 1 0 1 1
36 1 0 1 0 1 1
48 1 0 1 0 1 1
SITE_TEXT=C60.2 Body of penis
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1 0 1 0 1 1
24 1 0 1 0 1 1
36 1 0 1 0 1 1
48 1 0 1 0 1 1
60 1 0 1 0 1 1
SITE_TEXT=C60.8 Overlapping lesion of penis
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 2 0 1 0 1 1
24 1 0 1 0 1 1
36 1 0 1 0 1 1
48 1 0 1 0 1 1
60 1 0 1 0 1 1
120 1 0 1 0 1 1
SITE_TEXT=C60.9 Penis
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 21 1 0.955 0.0444 0.8714 1
24 16 1 0.898 0.0687 0.7734 1
36 15 0 0.898 0.0687 0.7734 1
48 13 1 0.834 0.0888 0.6771 1
60 9 1 0.770 0.1026 0.5931 1
120 1 3 0.257 0.1990 0.0562 1
## Univariable Cox Proportional Hazard Model for: SITE_TEXT
Loglik converged before variable 11,13,22,25,28,29 ; beta may be infinite. X matrix deemed to be singular; variable 1 2 3 4 5 6 7 8 9 10 19 26 27 30
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SITE_TEXT, data = data)
n= 1360, number of events= 329
coef exp(coef) se(coef) z Pr(>|z|)
SITE_TEXTC00.1 External Lip: Lower NOS NA NA 0.000e+00 NA NA
SITE_TEXTC00.2 External Lip: NOS NA NA 0.000e+00 NA NA
SITE_TEXTC00.3 Lip: Upper Mucosa NA NA 0.000e+00 NA NA
SITE_TEXTC00.4 Lip: Lower Mucosa NA NA 0.000e+00 NA NA
SITE_TEXTC00.5 Lip: Mucosa NOS NA NA 0.000e+00 NA NA
SITE_TEXTC00.6 Lip: Commissure NA NA 0.000e+00 NA NA
SITE_TEXTC00.8 Lip: Overlapping NA NA 0.000e+00 NA NA
SITE_TEXTC00.9 Lip, NOS NA NA 0.000e+00 NA NA
SITE_TEXTC44.0 Skin of lip, NOS NA NA 0.000e+00 NA NA
SITE_TEXTC44.1 Eyelid NA NA 0.000e+00 NA NA
SITE_TEXTC44.2 External ear -1.556e+01 1.740e-07 2.273e+03 -0.007 0.9945
SITE_TEXTC44.3 Skin of ear and unspecified parts of face 3.212e+00 2.482e+01 1.086e+00 2.958 0.0031 **
SITE_TEXTC44.4 Skin of scalp and neck -1.555e+01 1.769e-07 2.329e+03 -0.007 0.9947
SITE_TEXTC44.5 Skin of trunk 5.459e-02 1.056e+00 3.932e-01 0.139 0.8896
SITE_TEXTC44.6 Skin of upper limb and shoulder 2.825e-01 1.326e+00 8.020e-01 0.352 0.7247
SITE_TEXTC44.7 Skin of lower limb and hip 5.495e-01 1.732e+00 5.859e-01 0.938 0.3483
SITE_TEXTC44.8 Overlapping lesion of skin 1.017e+00 2.766e+00 5.348e-01 1.902 0.0572 .
SITE_TEXTC44.9 Skin, NOS 7.677e-01 2.155e+00 4.933e-01 1.556 0.1196
SITE_TEXTC50.0 Nipple NA NA 0.000e+00 NA NA
SITE_TEXTC51.0 Labium majus -7.908e-01 4.535e-01 4.537e-01 -1.743 0.0813 .
SITE_TEXTC51.1 Labium minus -6.349e-01 5.300e-01 6.908e-01 -0.919 0.3580
SITE_TEXTC51.2 Clitoris -1.555e+01 1.760e-07 2.937e+03 -0.005 0.9958
SITE_TEXTC51.8 Overlapping lesion of vulva -3.929e-01 6.751e-01 4.536e-01 -0.866 0.3864
SITE_TEXTC51.9 Vulva, NOS -5.073e-01 6.021e-01 3.857e-01 -1.315 0.1884
SITE_TEXTC52.9 Vagina, NOS -1.554e+01 1.787e-07 4.804e+03 -0.003 0.9974
SITE_TEXTC60.0 Prepuce NA NA 0.000e+00 NA NA
SITE_TEXTC60.1 Glans penis NA NA 0.000e+00 NA NA
SITE_TEXTC60.2 Body of penis -1.554e+01 1.776e-07 3.997e+03 -0.004 0.9969
SITE_TEXTC60.8 Overlapping lesion of penis -1.556e+01 1.749e-07 2.565e+03 -0.006 0.9952
SITE_TEXTC60.9 Penis NA NA 0.000e+00 NA NA
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
SITE_TEXTC00.1 External Lip: Lower NOS NA NA NA NA
SITE_TEXTC00.2 External Lip: NOS NA NA NA NA
SITE_TEXTC00.3 Lip: Upper Mucosa NA NA NA NA
SITE_TEXTC00.4 Lip: Lower Mucosa NA NA NA NA
SITE_TEXTC00.5 Lip: Mucosa NOS NA NA NA NA
SITE_TEXTC00.6 Lip: Commissure NA NA NA NA
SITE_TEXTC00.8 Lip: Overlapping NA NA NA NA
SITE_TEXTC00.9 Lip, NOS NA NA NA NA
SITE_TEXTC44.0 Skin of lip, NOS NA NA NA NA
SITE_TEXTC44.1 Eyelid NA NA NA NA
SITE_TEXTC44.2 External ear 1.740e-07 5.749e+06 0.0000 Inf
SITE_TEXTC44.3 Skin of ear and unspecified parts of face 2.482e+01 4.029e-02 2.9546 208.468
SITE_TEXTC44.4 Skin of scalp and neck 1.769e-07 5.652e+06 0.0000 Inf
SITE_TEXTC44.5 Skin of trunk 1.056e+00 9.469e-01 0.4887 2.282
SITE_TEXTC44.6 Skin of upper limb and shoulder 1.326e+00 7.539e-01 0.2754 6.388
SITE_TEXTC44.7 Skin of lower limb and hip 1.732e+00 5.772e-01 0.5495 5.462
SITE_TEXTC44.8 Overlapping lesion of skin 2.766e+00 3.616e-01 0.9694 7.889
SITE_TEXTC44.9 Skin, NOS 2.155e+00 4.641e-01 0.8195 5.666
SITE_TEXTC50.0 Nipple NA NA NA NA
SITE_TEXTC51.0 Labium majus 4.535e-01 2.205e+00 0.1864 1.103
SITE_TEXTC51.1 Labium minus 5.300e-01 1.887e+00 0.1369 2.052
SITE_TEXTC51.2 Clitoris 1.760e-07 5.683e+06 0.0000 Inf
SITE_TEXTC51.8 Overlapping lesion of vulva 6.751e-01 1.481e+00 0.2775 1.642
SITE_TEXTC51.9 Vulva, NOS 6.021e-01 1.661e+00 0.2828 1.282
SITE_TEXTC52.9 Vagina, NOS 1.787e-07 5.596e+06 0.0000 Inf
SITE_TEXTC60.0 Prepuce NA NA NA NA
SITE_TEXTC60.1 Glans penis NA NA NA NA
SITE_TEXTC60.2 Body of penis 1.776e-07 5.630e+06 0.0000 Inf
SITE_TEXTC60.8 Overlapping lesion of penis 1.749e-07 5.719e+06 0.0000 Inf
SITE_TEXTC60.9 Penis NA NA NA NA
Concordance= 0.593 (se = 0.015 )
Rsquare= 0.039 (max possible= 0.956 )
Likelihood ratio test= 53.58 on 16 df, p=6.07e-06
Wald test = 61.46 on 16 df, p=2.971e-07
Score (logrank) test = 88.8 on 16 df, p=4.164e-12
Transformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 15 rows containing missing values (geom_errorbar).Removed 31 rows containing missing values (geom_text).Removed 31 rows containing missing values (geom_text).Removed 31 rows containing missing values (geom_text).Removed 31 rows containing missing values (geom_text).Removed 31 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).
## Unadjusted Kaplan Meier Overall Survival Curve for: SITE_TEXT
This manual palette can handle a maximum of 10 values. You have supplied 17.



Histology
#uni_var(test_var = "HISTOLOGY_F_LIM", data_imp = data)
Grade
uni_var(test_var = "GRADE_F", data_imp = data)
_________________________________________________
## GRADE_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ GRADE_F, data = data)
n events median 0.95LCL 0.95UCL
GRADE_F=Gr I: Well Diff 38 10 131.9 70.3 NA
GRADE_F=Gr II: Mod Diff 30 15 67.1 51.4 NA
GRADE_F=Gr III: Poor Diff 36 23 29.3 21.6 NA
GRADE_F=NA/Unkown 1256 281 155.4 133.1 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ GRADE_F, data = data)
GRADE_F=Gr I: Well Diff
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 37 0 1.000 0.0000 1.000 1.00
24 34 2 0.945 0.0377 0.874 1.00
36 30 1 0.916 0.0467 0.829 1.00
48 20 0 0.916 0.0467 0.829 1.00
60 15 3 0.771 0.0861 0.620 0.96
120 4 3 0.591 0.1131 0.406 0.86
GRADE_F=Gr II: Mod Diff
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 25 3 0.893 0.0585 0.785 1.000
24 18 5 0.709 0.0867 0.558 0.901
36 15 0 0.709 0.0867 0.558 0.901
48 14 1 0.662 0.0929 0.503 0.872
60 10 3 0.516 0.1041 0.347 0.766
120 1 3 0.199 0.1510 0.045 0.880
GRADE_F=Gr III: Poor Diff
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 28 4 0.884 0.0548 0.7826 0.998
24 15 10 0.537 0.0920 0.3843 0.752
36 10 4 0.384 0.0924 0.2396 0.615
48 9 1 0.345 0.0907 0.2065 0.578
60 8 1 0.307 0.0884 0.1747 0.540
120 1 2 0.134 0.1041 0.0294 0.614
GRADE_F=NA/Unkown
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1094 41 0.965 0.00530 0.955 0.976
24 965 35 0.933 0.00742 0.919 0.948
36 809 35 0.897 0.00935 0.879 0.915
48 681 32 0.859 0.01108 0.838 0.881
60 559 37 0.809 0.01315 0.784 0.835
120 119 87 0.607 0.02270 0.564 0.653
## Univariable Cox Proportional Hazard Model for: GRADE_F
X matrix deemed to be singular; variable 3 4 5 6 7
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ GRADE_F, data = data)
n= 1360, number of events= 329
coef exp(coef) se(coef) z Pr(>|z|)
GRADE_FGr II: Mod Diff 0.8652 2.3754 0.4085 2.118 0.034169 *
GRADE_FGr III: Poor Diff 1.4655 4.3296 0.3794 3.863 0.000112 ***
GRADE_FGr IV: Undiff/Anaplastic NA NA 0.0000 NA NA
GRADE_F5 NA NA 0.0000 NA NA
GRADE_F6 NA NA 0.0000 NA NA
GRADE_F7 NA NA 0.0000 NA NA
GRADE_F8 NA NA 0.0000 NA NA
GRADE_FNA/Unkown -0.1716 0.8423 0.3220 -0.533 0.594005
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
GRADE_FGr II: Mod Diff 2.3754 0.421 1.0667 5.290
GRADE_FGr III: Poor Diff 4.3296 0.231 2.0583 9.107
GRADE_FGr IV: Undiff/Anaplastic NA NA NA NA
GRADE_F5 NA NA NA NA
GRADE_F6 NA NA NA NA
GRADE_F7 NA NA NA NA
GRADE_F8 NA NA NA NA
GRADE_FNA/Unkown 0.8423 1.187 0.4481 1.583
Concordance= 0.553 (se = 0.008 )
Rsquare= 0.034 (max possible= 0.956 )
Likelihood ratio test= 47.18 on 3 df, p=3.183e-10
Wald test = 68.17 on 3 df, p=1.055e-14
Score (logrank) test = 82.42 on 3 df, p=0
Removed 6 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: GRADE_F



Clinical T Stage
#uni_var(test_var = "TNM_CLIN_T", data_imp = data)
Clinical N Stage
#uni_var(test_var = "TNM_CLIN_N", data_imp = data)
Clinical M Stage
#uni_var(test_var = "TNM_CLIN_M", data_imp = data)
Clinical Stage Group
uni_var(test_var = "TNM_CLIN_STAGE_GROUP", data_imp = data)
_________________________________________________
## TNM_CLIN_STAGE_GROUP
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_CLIN_STAGE_GROUP, data = data)
n events median 0.95LCL 0.95UCL
TNM_CLIN_STAGE_GROUP=0 64 14 155.4 114.99 NA
TNM_CLIN_STAGE_GROUP=1 196 35 NA 103.66 NA
TNM_CLIN_STAGE_GROUP=1A 109 14 NA NA NA
TNM_CLIN_STAGE_GROUP=1B 119 19 NA NA NA
TNM_CLIN_STAGE_GROUP=2 184 51 121.8 97.25 NA
TNM_CLIN_STAGE_GROUP=3 15 4 NA 110.72 NA
TNM_CLIN_STAGE_GROUP=3B 1 1 20.9 NA NA
TNM_CLIN_STAGE_GROUP=4 9 7 22.2 10.81 NA
TNM_CLIN_STAGE_GROUP=4A 2 0 NA NA NA
TNM_CLIN_STAGE_GROUP=4B 5 5 12.9 6.67 NA
TNM_CLIN_STAGE_GROUP=N_A 1 0 NA NA NA
TNM_CLIN_STAGE_GROUP=99 655 179 133.4 126.09 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_CLIN_STAGE_GROUP, data = data)
TNM_CLIN_STAGE_GROUP=0
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 57 2 0.966 0.0238 0.920 1.000
24 49 2 0.930 0.0336 0.867 0.999
36 48 1 0.911 0.0379 0.840 0.989
48 39 0 0.911 0.0379 0.840 0.989
60 31 3 0.835 0.0546 0.735 0.949
120 7 5 0.612 0.1067 0.435 0.861
TNM_CLIN_STAGE_GROUP=1
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 169 7 0.962 0.0140 0.935 0.990
24 151 4 0.939 0.0180 0.904 0.974
36 126 4 0.911 0.0220 0.869 0.956
48 105 4 0.882 0.0258 0.832 0.934
60 85 5 0.836 0.0317 0.776 0.900
120 11 11 0.610 0.0665 0.492 0.755
TNM_CLIN_STAGE_GROUP=1A
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 93 2 0.979 0.0144 0.951 1.000
24 82 4 0.937 0.0251 0.889 0.987
36 69 2 0.912 0.0297 0.856 0.972
48 53 0 0.912 0.0297 0.856 0.972
60 37 4 0.836 0.0457 0.751 0.930
120 9 1 0.812 0.0503 0.719 0.917
TNM_CLIN_STAGE_GROUP=1B
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 105 3 0.974 0.0146 0.946 1.000
24 92 5 0.926 0.0253 0.877 0.977
36 66 4 0.879 0.0332 0.816 0.947
48 54 1 0.864 0.0359 0.797 0.937
60 42 1 0.847 0.0391 0.774 0.927
120 3 5 0.703 0.0691 0.580 0.852
TNM_CLIN_STAGE_GROUP=2
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 163 4 0.977 0.0115 0.954 1.000
24 139 8 0.926 0.0206 0.887 0.967
36 115 6 0.883 0.0260 0.834 0.936
48 96 5 0.841 0.0309 0.782 0.904
60 82 8 0.768 0.0375 0.698 0.845
120 13 16 0.538 0.0576 0.436 0.664
TNM_CLIN_STAGE_GROUP=3
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 13 2 0.867 0.0878 0.711 1
24 13 0 0.867 0.0878 0.711 1
36 12 1 0.800 0.1033 0.621 1
48 12 0 0.800 0.1033 0.621 1
60 12 0 0.800 0.1033 0.621 1
120 1 1 0.533 0.2284 0.230 1
TNM_CLIN_STAGE_GROUP=3B
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1 0 1 0 1 1
TNM_CLIN_STAGE_GROUP=4
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 6 3 0.667 0.157 0.4200 1.000
24 3 3 0.333 0.157 0.1323 0.840
36 2 1 0.222 0.139 0.0655 0.754
48 1 0 0.222 0.139 0.0655 0.754
60 1 0 0.222 0.139 0.0655 0.754
TNM_CLIN_STAGE_GROUP=4A
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 2 0 1 0 1 1
24 1 0 1 0 1 1
36 1 0 1 0 1 1
TNM_CLIN_STAGE_GROUP=4B
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12.000 3.000 2.000 0.600 0.219 0.293 1.000
TNM_CLIN_STAGE_GROUP=N_A
time n.risk n.event survival std.err lower 95% CI upper 95% CI
TNM_CLIN_STAGE_GROUP=99
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 572 23 0.963 0.00749 0.949 0.978
24 502 22 0.925 0.01084 0.904 0.946
36 425 21 0.883 0.01363 0.857 0.910
48 364 24 0.831 0.01649 0.799 0.864
60 302 23 0.775 0.01904 0.739 0.813
120 81 56 0.571 0.02868 0.518 0.630
## Univariable Cox Proportional Hazard Model for: TNM_CLIN_STAGE_GROUP
Loglik converged before variable 14,17 ; beta may be infinite. X matrix deemed to be singular; variable 4 6 7 8 10 12 16
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_CLIN_STAGE_GROUP, data = data)
n= 1360, number of events= 329
coef exp(coef) se(coef) z Pr(>|z|)
TNM_CLIN_STAGE_GROUP1 -1.658e-02 9.836e-01 3.165e-01 -0.052 0.95823
TNM_CLIN_STAGE_GROUP1A -2.947e-01 7.447e-01 3.781e-01 -0.779 0.43573
TNM_CLIN_STAGE_GROUP1B 6.078e-02 1.063e+00 3.531e-01 0.172 0.86333
TNM_CLIN_STAGE_GROUP1C NA NA 0.000e+00 NA NA
TNM_CLIN_STAGE_GROUP2 3.647e-01 1.440e+00 3.018e-01 1.208 0.22691
TNM_CLIN_STAGE_GROUP2A NA NA 0.000e+00 NA NA
TNM_CLIN_STAGE_GROUP2B NA NA 0.000e+00 NA NA
TNM_CLIN_STAGE_GROUP2C NA NA 0.000e+00 NA NA
TNM_CLIN_STAGE_GROUP3 -5.652e-02 9.450e-01 5.674e-01 -0.100 0.92064
TNM_CLIN_STAGE_GROUP3A NA NA 0.000e+00 NA NA
TNM_CLIN_STAGE_GROUP3B 2.925e+00 1.863e+01 1.040e+00 2.812 0.00492 **
TNM_CLIN_STAGE_GROUP3C NA NA 0.000e+00 NA NA
TNM_CLIN_STAGE_GROUP4 2.323e+00 1.020e+01 4.653e-01 4.992 5.99e-07 ***
TNM_CLIN_STAGE_GROUP4A -1.244e+01 3.959e-06 1.258e+03 -0.010 0.99211
TNM_CLIN_STAGE_GROUP4B 3.690e+00 4.003e+01 5.367e-01 6.875 6.19e-12 ***
TNM_CLIN_STAGE_GROUP4C NA NA 0.000e+00 NA NA
TNM_CLIN_STAGE_GROUPN_A -1.243e+01 4.010e-06 7.660e+03 -0.002 0.99871
TNM_CLIN_STAGE_GROUP99 2.520e-01 1.287e+00 2.776e-01 0.908 0.36398
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
TNM_CLIN_STAGE_GROUP1 9.836e-01 1.017e+00 0.5289 1.829
TNM_CLIN_STAGE_GROUP1A 7.447e-01 1.343e+00 0.3549 1.563
TNM_CLIN_STAGE_GROUP1B 1.063e+00 9.410e-01 0.5319 2.123
TNM_CLIN_STAGE_GROUP1C NA NA NA NA
TNM_CLIN_STAGE_GROUP2 1.440e+00 6.944e-01 0.7970 2.602
TNM_CLIN_STAGE_GROUP2A NA NA NA NA
TNM_CLIN_STAGE_GROUP2B NA NA NA NA
TNM_CLIN_STAGE_GROUP2C NA NA NA NA
TNM_CLIN_STAGE_GROUP3 9.450e-01 1.058e+00 0.3108 2.873
TNM_CLIN_STAGE_GROUP3A NA NA NA NA
TNM_CLIN_STAGE_GROUP3B 1.863e+01 5.366e-02 2.4263 143.117
TNM_CLIN_STAGE_GROUP3C NA NA NA NA
TNM_CLIN_STAGE_GROUP4 1.020e+01 9.802e-02 4.0985 25.396
TNM_CLIN_STAGE_GROUP4A 3.959e-06 2.526e+05 0.0000 Inf
TNM_CLIN_STAGE_GROUP4B 4.003e+01 2.498e-02 13.9819 114.594
TNM_CLIN_STAGE_GROUP4C NA NA NA NA
TNM_CLIN_STAGE_GROUPN_A 4.010e-06 2.494e+05 0.0000 Inf
TNM_CLIN_STAGE_GROUP99 1.287e+00 7.773e-01 0.7467 2.217
Concordance= 0.56 (se = 0.017 )
Rsquare= 0.039 (max possible= 0.956 )
Likelihood ratio test= 54.76 on 11 df, p=8.583e-08
Wald test = 97.79 on 11 df, p=4.441e-16
Score (logrank) test = 201.6 on 11 df, p=0
Transformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 8 rows containing missing values (geom_errorbar).Removed 19 rows containing missing values (geom_text).Removed 19 rows containing missing values (geom_text).Removed 19 rows containing missing values (geom_text).Removed 19 rows containing missing values (geom_text).Removed 19 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).
## Unadjusted Kaplan Meier Overall Survival Curve for: TNM_CLIN_STAGE_GROUP
This manual palette can handle a maximum of 10 values. You have supplied 12.



Pathologic T Stage
#uni_var(test_var = "TNM_PATH_T", data_imp = data)
Pathologic N Stage
#uni_var(test_var = "TNM_PATH_N", data_imp = data)
Pathologic M Stage
#uni_var(test_var = "TNM_PATH_M", data_imp = data)
Pathologic Stage Group
uni_var(test_var = "TNM_PATH_STAGE_GROUP", data_imp = data)
_________________________________________________
## TNM_PATH_STAGE_GROUP
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_PATH_STAGE_GROUP, data = data)
79 observations deleted due to missingness
n events median 0.95LCL 0.95UCL
TNM_PATH_STAGE_GROUP=0 58 12 NA 128.46 NA
TNM_PATH_STAGE_GROUP=1 107 18 NA 120.94 NA
TNM_PATH_STAGE_GROUP=1A 104 18 155.4 114.99 NA
TNM_PATH_STAGE_GROUP=1B 92 13 NA NA NA
TNM_PATH_STAGE_GROUP=2 120 24 NA 130.53 NA
TNM_PATH_STAGE_GROUP=3 26 14 110.7 49.74 NA
TNM_PATH_STAGE_GROUP=3A 2 2 20.6 2.04 NA
TNM_PATH_STAGE_GROUP=3C 5 4 14.6 11.17 NA
TNM_PATH_STAGE_GROUP=4 4 2 23.6 5.06 NA
TNM_PATH_STAGE_GROUP=4A 5 3 16.9 4.34 NA
TNM_PATH_STAGE_GROUP=4B 1 1 13.5 NA NA
TNM_PATH_STAGE_GROUP=N_A 1 0 NA NA NA
TNM_PATH_STAGE_GROUP=99 756 204 133.1 115.94 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_PATH_STAGE_GROUP, data = data)
79 observations deleted due to missingness
TNM_PATH_STAGE_GROUP=0
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 52 1 0.981 0.0190 0.944 1.000
24 46 1 0.961 0.0269 0.910 1.000
36 43 1 0.939 0.0340 0.875 1.000
48 39 0 0.939 0.0340 0.875 1.000
60 33 2 0.888 0.0477 0.800 0.987
120 10 6 0.694 0.0806 0.553 0.872
TNM_PATH_STAGE_GROUP=1
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 92 1 0.990 0.00985 0.971 1.000
24 84 1 0.979 0.01503 0.950 1.000
36 76 1 0.966 0.01948 0.928 1.000
48 66 2 0.940 0.02613 0.890 0.993
60 54 4 0.879 0.03833 0.807 0.958
120 11 7 0.668 0.08129 0.526 0.848
TNM_PATH_STAGE_GROUP=1A
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 97 1 0.990 0.0100 0.970 1.000
24 87 3 0.958 0.0206 0.918 0.999
36 77 3 0.923 0.0280 0.870 0.980
48 58 2 0.896 0.0331 0.834 0.963
60 45 3 0.844 0.0426 0.765 0.932
120 9 5 0.652 0.0895 0.498 0.853
TNM_PATH_STAGE_GROUP=1B
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 78 2 0.977 0.0161 0.946 1.000
24 69 1 0.963 0.0208 0.924 1.000
36 52 2 0.931 0.0302 0.874 0.992
48 41 3 0.870 0.0444 0.787 0.961
60 34 2 0.823 0.0530 0.725 0.934
120 2 3 0.723 0.0731 0.593 0.881
TNM_PATH_STAGE_GROUP=2
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 107 1 0.991 0.00897 0.974 1.000
24 93 5 0.942 0.02315 0.897 0.988
36 83 2 0.920 0.02704 0.869 0.975
48 72 3 0.884 0.03328 0.821 0.951
60 62 2 0.858 0.03706 0.788 0.933
120 19 8 0.720 0.05499 0.620 0.836
TNM_PATH_STAGE_GROUP=3
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 23 3 0.885 0.0627 0.770 1.000
24 21 2 0.808 0.0773 0.670 0.974
36 21 0 0.808 0.0773 0.670 0.974
48 18 3 0.692 0.0905 0.536 0.895
60 17 1 0.654 0.0933 0.494 0.865
120 2 4 0.294 0.1448 0.112 0.772
TNM_PATH_STAGE_GROUP=3A
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1 1 0.5 0.354 0.125 1
24 1 0 0.5 0.354 0.125 1
36 1 0 0.5 0.354 0.125 1
TNM_PATH_STAGE_GROUP=3C
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12.000 3.000 2.000 0.600 0.219 0.293 1.000
TNM_PATH_STAGE_GROUP=4
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 3 1 0.75 0.217 0.426 1
24 2 1 0.50 0.250 0.188 1
TNM_PATH_STAGE_GROUP=4A
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 3 2 0.6 0.219 0.293 1
24 2 1 0.4 0.219 0.137 1
36 2 0 0.4 0.219 0.137 1
48 1 0 0.4 0.219 0.137 1
60 1 0 0.4 0.219 0.137 1
TNM_PATH_STAGE_GROUP=4B
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1 0 1 0 1 1
TNM_PATH_STAGE_GROUP=N_A
time n.risk n.event survival std.err lower 95% CI upper 95% CI
TNM_PATH_STAGE_GROUP=99
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 659 30 0.958 0.00748 0.944 0.973
24 572 29 0.915 0.01066 0.894 0.936
36 475 29 0.865 0.01353 0.839 0.892
48 402 19 0.828 0.01531 0.799 0.859
60 330 29 0.765 0.01809 0.731 0.802
120 72 60 0.552 0.02880 0.499 0.612
## Univariable Cox Proportional Hazard Model for: TNM_PATH_STAGE_GROUP
Loglik converged before variable 17 ; beta may be infinite. X matrix deemed to be singular; variable 4 6 7 8 11 16
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_PATH_STAGE_GROUP, data = data)
n= 1281, number of events= 315
(79 observations deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
TNM_PATH_STAGE_GROUP1 4.124e-02 1.042e+00 3.731e-01 0.111 0.911974
TNM_PATH_STAGE_GROUP1A 6.457e-02 1.067e+00 3.732e-01 0.173 0.862617
TNM_PATH_STAGE_GROUP1B 1.515e-01 1.164e+00 4.016e-01 0.377 0.706068
TNM_PATH_STAGE_GROUP1C NA NA 0.000e+00 NA NA
TNM_PATH_STAGE_GROUP2 5.139e-02 1.053e+00 3.536e-01 0.145 0.884434
TNM_PATH_STAGE_GROUP2A NA NA 0.000e+00 NA NA
TNM_PATH_STAGE_GROUP2B NA NA 0.000e+00 NA NA
TNM_PATH_STAGE_GROUP2C NA NA 0.000e+00 NA NA
TNM_PATH_STAGE_GROUP3 9.321e-01 2.540e+00 3.937e-01 2.368 0.017900 *
TNM_PATH_STAGE_GROUP3A 3.075e+00 2.165e+01 7.676e-01 4.006 6.18e-05 ***
TNM_PATH_STAGE_GROUP3B NA NA 0.000e+00 NA NA
TNM_PATH_STAGE_GROUP3C 3.388e+00 2.961e+01 5.896e-01 5.746 9.12e-09 ***
TNM_PATH_STAGE_GROUP4 2.273e+00 9.710e+00 7.682e-01 2.959 0.003086 **
TNM_PATH_STAGE_GROUP4A 1.857e+00 6.403e+00 6.462e-01 2.874 0.004058 **
TNM_PATH_STAGE_GROUP4B 3.622e+00 3.743e+01 1.050e+00 3.450 0.000561 ***
TNM_PATH_STAGE_GROUP4C NA NA 0.000e+00 NA NA
TNM_PATH_STAGE_GROUPN_A -8.254e+00 2.602e-04 1.082e+03 -0.008 0.993915
TNM_PATH_STAGE_GROUP99 5.196e-01 1.681e+00 2.973e-01 1.748 0.080538 .
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
TNM_PATH_STAGE_GROUP1 1.042e+00 9.596e-01 0.5016 2.165
TNM_PATH_STAGE_GROUP1A 1.067e+00 9.375e-01 0.5134 2.217
TNM_PATH_STAGE_GROUP1B 1.164e+00 8.595e-01 0.5296 2.556
TNM_PATH_STAGE_GROUP1C NA NA NA NA
TNM_PATH_STAGE_GROUP2 1.053e+00 9.499e-01 0.5264 2.105
TNM_PATH_STAGE_GROUP2A NA NA NA NA
TNM_PATH_STAGE_GROUP2B NA NA NA NA
TNM_PATH_STAGE_GROUP2C NA NA NA NA
TNM_PATH_STAGE_GROUP3 2.540e+00 3.937e-01 1.1741 5.494
TNM_PATH_STAGE_GROUP3A 2.165e+01 4.619e-02 4.8088 97.458
TNM_PATH_STAGE_GROUP3B NA NA NA NA
TNM_PATH_STAGE_GROUP3C 2.961e+01 3.377e-02 9.3239 94.054
TNM_PATH_STAGE_GROUP4 9.710e+00 1.030e-01 2.1544 43.765
TNM_PATH_STAGE_GROUP4A 6.403e+00 1.562e-01 1.8046 22.719
TNM_PATH_STAGE_GROUP4B 3.743e+01 2.672e-02 4.7798 293.077
TNM_PATH_STAGE_GROUP4C NA NA NA NA
TNM_PATH_STAGE_GROUPN_A 2.602e-04 3.843e+03 0.0000 Inf
TNM_PATH_STAGE_GROUP99 1.681e+00 5.948e-01 0.9388 3.011
Concordance= 0.596 (se = 0.016 )
Rsquare= 0.04 (max possible= 0.957 )
Likelihood ratio test= 52.84 on 12 df, p=4.392e-07
Wald test = 83.27 on 12 df, p=9.798e-13
Score (logrank) test = 142.6 on 12 df, p=0
Transformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 7 rows containing missing values (geom_errorbar).Removed 19 rows containing missing values (geom_text).Removed 19 rows containing missing values (geom_text).Removed 19 rows containing missing values (geom_text).Removed 19 rows containing missing values (geom_text).Removed 19 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).
## Unadjusted Kaplan Meier Overall Survival Curve for: TNM_PATH_STAGE_GROUP
This manual palette can handle a maximum of 10 values. You have supplied 13.



Margins
uni_var(test_var = "MARGINS", data_imp = data)
_________________________________________________
## MARGINS
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ MARGINS, data = data)
n events median 0.95LCL 0.95UCL
MARGINS=No Residual 601 124 NA 128.5 NA
MARGINS=Residual, NOS 164 38 131.9 121.8 NA
MARGINS=Microscopic Resid 351 71 155.4 133.4 NA
MARGINS=Macroscopic Resid 17 7 71.5 49.7 NA
MARGINS=Not evaluable 22 3 NA 92.3 NA
MARGINS=No surg 161 75 63.2 53.8 75.6
MARGINS=Unknown 44 11 NA 72.4 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ MARGINS, data = data)
MARGINS=No Residual
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 524 13 0.977 0.00638 0.964 0.989
24 472 14 0.950 0.00945 0.931 0.968
36 398 16 0.915 0.01246 0.891 0.940
48 344 14 0.881 0.01503 0.852 0.910
60 285 21 0.823 0.01858 0.787 0.860
120 62 41 0.619 0.03318 0.557 0.687
MARGINS=Residual, NOS
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 148 4 0.975 0.0124 0.951 0.999
24 125 9 0.912 0.0233 0.868 0.959
36 107 4 0.881 0.0272 0.829 0.936
48 88 4 0.846 0.0313 0.787 0.910
60 70 6 0.784 0.0379 0.713 0.862
120 13 8 0.633 0.0600 0.526 0.762
MARGINS=Microscopic Resid
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 313 11 0.967 0.00972 0.948 0.986
24 279 7 0.945 0.01273 0.920 0.970
36 238 9 0.912 0.01623 0.881 0.945
48 200 8 0.880 0.01931 0.843 0.918
60 174 7 0.848 0.02207 0.806 0.892
120 38 24 0.659 0.04124 0.583 0.745
MARGINS=Macroscopic Resid
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 14 0 1.000 0.0000 1.000 1.000
24 12 2 0.857 0.0935 0.692 1.000
36 9 1 0.771 0.1170 0.573 1.000
48 9 0 0.771 0.1170 0.573 1.000
60 5 2 0.579 0.1471 0.351 0.952
120 2 1 0.463 0.1567 0.238 0.899
MARGINS=Not evaluable
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 17 0 1.000 0.0000 1.000 1
24 16 0 1.000 0.0000 1.000 1
36 13 0 1.000 0.0000 1.000 1
48 10 1 0.923 0.0739 0.789 1
60 8 0 0.923 0.0739 0.789 1
120 2 2 0.659 0.1662 0.402 1
MARGINS=No surg
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 128 19 0.876 0.0267 0.825 0.930
24 92 19 0.735 0.0372 0.666 0.812
36 68 9 0.654 0.0418 0.577 0.742
48 52 5 0.601 0.0447 0.520 0.695
60 32 6 0.516 0.0502 0.427 0.625
120 4 15 0.210 0.0605 0.120 0.369
MARGINS=Unknown
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 40 1 0.976 0.0235 0.931 1.000
24 36 1 0.951 0.0342 0.886 1.000
36 31 1 0.923 0.0431 0.842 1.000
48 21 2 0.863 0.0573 0.758 0.983
60 18 2 0.779 0.0767 0.642 0.945
120 4 4 0.567 0.1076 0.391 0.823
## Univariable Cox Proportional Hazard Model for: MARGINS
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ MARGINS, data = data)
n= 1360, number of events= 329
coef exp(coef) se(coef) z Pr(>|z|)
MARGINSResidual, NOS 0.21302 1.23740 0.18558 1.148 0.2510
MARGINSMicroscopic Resid -0.05557 0.94595 0.14886 -0.373 0.7089
MARGINSMacroscopic Resid 0.88777 2.42971 0.38887 2.283 0.0224 *
MARGINSNot evaluable -0.26976 0.76356 0.58437 -0.462 0.6443
MARGINSNo surg 1.38452 3.99292 0.14815 9.345 <2e-16 ***
MARGINSUnknown 0.26715 1.30624 0.31484 0.849 0.3961
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
MARGINSResidual, NOS 1.2374 0.8081 0.8601 1.780
MARGINSMicroscopic Resid 0.9459 1.0571 0.7066 1.266
MARGINSMacroscopic Resid 2.4297 0.4116 1.1338 5.207
MARGINSNot evaluable 0.7636 1.3097 0.2429 2.400
MARGINSNo surg 3.9929 0.2504 2.9866 5.338
MARGINSUnknown 1.3062 0.7656 0.7047 2.421
Concordance= 0.617 (se = 0.017 )
Rsquare= 0.061 (max possible= 0.956 )
Likelihood ratio test= 85.81 on 6 df, p=2.22e-16
Wald test = 107.9 on 6 df, p=0
Score (logrank) test = 124.8 on 6 df, p=0
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: MARGINS



Margins Yes/No
#uni_var(test_var = "MARGINS_YN", data_imp = data)
30 Day Readmission
uni_var(test_var = "READM_HOSP_30_DAYS_F", data_imp = data)
_________________________________________________
## READM_HOSP_30_DAYS_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ READM_HOSP_30_DAYS_F, data = data)
n events median 0.95LCL 0.95UCL
READM_HOSP_30_DAYS_F=No_Surg_or_No_Readmit 1292 305 141.77 128.2 NA
READM_HOSP_30_DAYS_F=Unplan_Readmit_Same 36 15 110.72 59.9 NA
READM_HOSP_30_DAYS_F=Plan_Readmit_Same 15 5 90.28 66.2 NA
READM_HOSP_30_DAYS_F=PlanUnplan_Same 1 1 1.38 NA NA
READM_HOSP_30_DAYS_F=9 16 3 NA NA NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ READM_HOSP_30_DAYS_F, data = data)
READM_HOSP_30_DAYS_F=No_Surg_or_No_Readmit
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1126 44 0.964 0.00533 0.954 0.975
24 979 47 0.922 0.00789 0.907 0.937
36 821 37 0.884 0.00969 0.865 0.903
48 684 33 0.846 0.01131 0.824 0.869
60 558 40 0.793 0.01335 0.768 0.820
120 118 88 0.591 0.02269 0.548 0.637
READM_HOSP_30_DAYS_F=Unplan_Readmit_Same
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 30 3 0.915 0.0470 0.827 1.000
24 27 3 0.823 0.0656 0.704 0.963
36 24 1 0.792 0.0703 0.665 0.942
48 21 1 0.756 0.0758 0.621 0.920
60 17 3 0.642 0.0883 0.491 0.841
120 5 4 0.441 0.1073 0.273 0.710
READM_HOSP_30_DAYS_F=Plan_Readmit_Same
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 14 0 1.000 0.0000 1.000 1
24 13 1 0.929 0.0688 0.803 1
36 7 2 0.774 0.1152 0.578 1
48 7 0 0.774 0.1152 0.578 1
60 6 0 0.774 0.1152 0.578 1
READM_HOSP_30_DAYS_F=PlanUnplan_Same
time n.risk n.event survival std.err lower 95% CI upper 95% CI
READM_HOSP_30_DAYS_F=9
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 14 0 1.000 0.0000 1.000 1
24 13 1 0.929 0.0688 0.803 1
36 12 0 0.929 0.0688 0.803 1
48 12 0 0.929 0.0688 0.803 1
60 11 1 0.851 0.0973 0.680 1
120 2 1 0.766 0.1191 0.565 1
## Univariable Cox Proportional Hazard Model for: READM_HOSP_30_DAYS_F
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ READM_HOSP_30_DAYS_F, data = data)
n= 1360, number of events= 329
coef exp(coef) se(coef) z Pr(>|z|)
READM_HOSP_30_DAYS_FUnplan_Readmit_Same 0.4686 1.5977 0.2646 1.771 0.0766 .
READM_HOSP_30_DAYS_FPlan_Readmit_Same 0.4202 1.5223 0.4511 0.931 0.3516
READM_HOSP_30_DAYS_FPlanUnplan_Same 5.2765 195.6763 1.0691 4.935 8.01e-07 ***
READM_HOSP_30_DAYS_F9 -0.5392 0.5832 0.5804 -0.929 0.3529
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
READM_HOSP_30_DAYS_FUnplan_Readmit_Same 1.5977 0.62589 0.9512 2.684
READM_HOSP_30_DAYS_FPlan_Readmit_Same 1.5223 0.65690 0.6288 3.686
READM_HOSP_30_DAYS_FPlanUnplan_Same 195.6763 0.00511 24.0705 1590.712
READM_HOSP_30_DAYS_F9 0.5832 1.71469 0.1870 1.819
Concordance= 0.518 (se = 0.007 )
Rsquare= 0.009 (max possible= 0.956 )
Likelihood ratio test= 12.97 on 4 df, p=0.01143
Wald test = 29.02 on 4 df, p=7.732e-06
Score (logrank) test = 171.6 on 4 df, p=0
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: READM_HOSP_30_DAYS_F



Radiation Type
uni_var(test_var = "RX_SUMM_RADIATION_F", data_imp = data)
_________________________________________________
## RX_SUMM_RADIATION_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ RX_SUMM_RADIATION_F, data = data)
n events median 0.95LCL 0.95UCL
RX_SUMM_RADIATION_F=None 1268 290 149.6 128.5 NA
RX_SUMM_RADIATION_F=Beam Radiation 73 35 61.9 40.6 NA
RX_SUMM_RADIATION_F=Radioactive Implants 1 0 NA NA NA
RX_SUMM_RADIATION_F=Beam + Imp or Isotopes 1 0 NA NA NA
RX_SUMM_RADIATION_F=Unknown 17 4 NA 131.9 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ RX_SUMM_RADIATION_F, data = data)
RX_SUMM_RADIATION_F=None
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1104 39 0.968 0.00512 0.958 0.978
24 973 40 0.931 0.00752 0.916 0.946
36 817 37 0.893 0.00947 0.874 0.912
48 685 31 0.857 0.01110 0.835 0.879
60 560 41 0.802 0.01330 0.776 0.828
120 115 88 0.595 0.02306 0.551 0.642
RX_SUMM_RADIATION_F=Beam Radiation
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 64 8 0.890 0.0366 0.822 0.965
24 44 12 0.711 0.0548 0.611 0.827
36 33 3 0.658 0.0587 0.553 0.784
48 25 3 0.595 0.0634 0.483 0.733
60 19 3 0.515 0.0697 0.395 0.671
120 5 5 0.354 0.0798 0.228 0.551
RX_SUMM_RADIATION_F=Radioactive Implants
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1 0 1 0 1 1
RX_SUMM_RADIATION_F=Beam + Imp or Isotopes
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1 0 1 0 1 1
24 1 0 1 0 1 1
36 1 0 1 0 1 1
48 1 0 1 0 1 1
60 1 0 1 0 1 1
RX_SUMM_RADIATION_F=Unknown
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 14 1 0.933 0.0644 0.815 1
24 14 0 0.933 0.0644 0.815 1
36 13 0 0.933 0.0644 0.815 1
48 13 0 0.933 0.0644 0.815 1
60 12 0 0.933 0.0644 0.815 1
120 5 2 0.770 0.1179 0.570 1
## Univariable Cox Proportional Hazard Model for: RX_SUMM_RADIATION_F
Loglik converged before variable 2,4 ; beta may be infinite. X matrix deemed to be singular; variable 3 5
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ RX_SUMM_RADIATION_F, data = data)
n= 1360, number of events= 329
coef exp(coef) se(coef) z Pr(>|z|)
RX_SUMM_RADIATION_FBeam Radiation 1.037e+00 2.819e+00 1.794e-01 5.779 7.52e-09 ***
RX_SUMM_RADIATION_FRadioactive Implants -1.306e+01 2.122e-06 2.871e+03 -0.005 0.996
RX_SUMM_RADIATION_FRadioisotopes NA NA 0.000e+00 NA NA
RX_SUMM_RADIATION_FBeam + Imp or Isotopes -1.305e+01 2.140e-06 1.133e+03 -0.012 0.991
RX_SUMM_RADIATION_FRadiation, NOS NA NA 0.000e+00 NA NA
RX_SUMM_RADIATION_FUnknown -4.143e-01 6.608e-01 5.046e-01 -0.821 0.412
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
RX_SUMM_RADIATION_FBeam Radiation 2.819e+00 3.547e-01 1.9837 4.007
RX_SUMM_RADIATION_FRadioactive Implants 2.122e-06 4.712e+05 0.0000 Inf
RX_SUMM_RADIATION_FRadioisotopes NA NA NA NA
RX_SUMM_RADIATION_FBeam + Imp or Isotopes 2.140e-06 4.673e+05 0.0000 Inf
RX_SUMM_RADIATION_FRadiation, NOS NA NA NA NA
RX_SUMM_RADIATION_FUnknown 6.608e-01 1.513e+00 0.2458 1.777
Concordance= 0.548 (se = 0.007 )
Rsquare= 0.02 (max possible= 0.956 )
Likelihood ratio test= 27.64 on 4 df, p=1.478e-05
Wald test = 34.45 on 4 df, p=6.024e-07
Score (logrank) test = 38.17 on 4 df, p=1.034e-07
Transformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 3 rows containing missing values (geom_errorbar).Removed 7 rows containing missing values (geom_text).Removed 7 rows containing missing values (geom_text).Removed 7 rows containing missing values (geom_text).Removed 7 rows containing missing values (geom_text).Removed 7 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).
## Unadjusted Kaplan Meier Overall Survival Curve for: RX_SUMM_RADIATION_F



Lymphovascular Invasion
uni_var(test_var = "LYMPH_VASCULAR_INVASION_F", data_imp = data)
_________________________________________________
## LYMPH_VASCULAR_INVASION_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ LYMPH_VASCULAR_INVASION_F, data = data)
622 observations deleted due to missingness
n events median 0.95LCL 0.95UCL
LYMPH_VASCULAR_INVASION_F=Neg_LymphVasc_Inv 271 43 NA 80.1 NA
LYMPH_VASCULAR_INVASION_F=Pos_LumphVasc_Inv 28 15 27.8 20.9 NA
LYMPH_VASCULAR_INVASION_F=N_A 1 0 NA NA NA
LYMPH_VASCULAR_INVASION_F=Unknown 438 61 NA NA NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ LYMPH_VASCULAR_INVASION_F, data = data)
622 observations deleted due to missingness
LYMPH_VASCULAR_INVASION_F=Neg_LymphVasc_Inv
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 234 8 0.968 0.0111 0.947 0.990
24 196 10 0.924 0.0172 0.891 0.959
36 147 7 0.887 0.0215 0.846 0.931
48 100 4 0.859 0.0252 0.811 0.910
60 62 8 0.776 0.0361 0.708 0.850
LYMPH_VASCULAR_INVASION_F=Pos_LumphVasc_Inv
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 22 5 0.816 0.0744 0.682 0.976
24 11 7 0.515 0.1030 0.348 0.762
36 7 1 0.458 0.1062 0.290 0.721
48 3 2 0.294 0.1180 0.134 0.646
60 3 0 0.294 0.1180 0.134 0.646
LYMPH_VASCULAR_INVASION_F=N_A
time n.risk n.event survival std.err lower 95% CI upper 95% CI
LYMPH_VASCULAR_INVASION_F=Unknown
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 372 10 0.975 0.00772 0.960 0.991
24 303 15 0.933 0.01301 0.908 0.959
36 216 14 0.884 0.01775 0.850 0.920
48 165 3 0.871 0.01913 0.834 0.909
60 108 9 0.816 0.02524 0.768 0.867
## Univariable Cox Proportional Hazard Model for: LYMPH_VASCULAR_INVASION_F
Loglik converged before variable 2 ; beta may be infinite.
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ LYMPH_VASCULAR_INVASION_F, data = data)
n= 738, number of events= 119
(622 observations deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
LYMPH_VASCULAR_INVASION_FPos_LumphVasc_Inv 1.684e+00 5.389e+00 3.019e-01 5.579 2.42e-08 ***
LYMPH_VASCULAR_INVASION_FN_A -1.057e+01 2.557e-05 1.655e+03 -0.006 0.995
LYMPH_VASCULAR_INVASION_FUnknown -1.111e-01 8.948e-01 1.992e-01 -0.558 0.577
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
LYMPH_VASCULAR_INVASION_FPos_LumphVasc_Inv 5.389e+00 1.856e-01 2.9819 9.739
LYMPH_VASCULAR_INVASION_FN_A 2.557e-05 3.911e+04 0.0000 Inf
LYMPH_VASCULAR_INVASION_FUnknown 8.948e-01 1.118e+00 0.6056 1.322
Concordance= 0.575 (se = 0.025 )
Rsquare= 0.035 (max possible= 0.851 )
Likelihood ratio test= 26.52 on 3 df, p=7.429e-06
Wald test = 39.82 on 3 df, p=1.166e-08
Score (logrank) test = 51.01 on 3 df, p=4.857e-11
Transformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 1 rows containing missing values (geom_errorbar).Removed 4 rows containing missing values (geom_text).Removed 4 rows containing missing values (geom_text).Removed 4 rows containing missing values (geom_text).Removed 4 rows containing missing values (geom_text).Removed 4 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).
## Unadjusted Kaplan Meier Overall Survival Curve for: LYMPH_VASCULAR_INVASION_F



Endoscopic/Robotic
uni_var(test_var = "RX_HOSP_SURG_APPR_2010_F", data_imp = data)
_________________________________________________
## RX_HOSP_SURG_APPR_2010_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ RX_HOSP_SURG_APPR_2010_F, data = data)
622 observations deleted due to missingness
n events median 0.95LCL 0.95UCL
RX_HOSP_SURG_APPR_2010_F=No_Surg 122 38 61.9 53.5 NA
RX_HOSP_SURG_APPR_2010_F=Robot_Assist 2 0 NA NA NA
RX_HOSP_SURG_APPR_2010_F=Endo_Lap 18 1 NA NA NA
RX_HOSP_SURG_APPR_2010_F=Endo_Lap_to_Open 2 0 NA NA NA
RX_HOSP_SURG_APPR_2010_F=Open_Unknown 594 80 NA NA NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ RX_HOSP_SURG_APPR_2010_F, data = data)
622 observations deleted due to missingness
RX_HOSP_SURG_APPR_2010_F=No_Surg
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 94 9 0.920 0.0257 0.871 0.972
24 62 14 0.766 0.0434 0.686 0.856
36 39 7 0.667 0.0516 0.574 0.777
48 24 3 0.607 0.0576 0.504 0.731
60 9 2 0.527 0.0728 0.402 0.691
RX_HOSP_SURG_APPR_2010_F=Robot_Assist
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 2 0 1 0 1 1
24 2 0 1 0 1 1
RX_HOSP_SURG_APPR_2010_F=Endo_Lap
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 15 0 1.0 0.000 1.000 1
24 15 0 1.0 0.000 1.000 1
36 12 0 1.0 0.000 1.000 1
48 7 0 1.0 0.000 1.000 1
60 4 1 0.8 0.179 0.516 1
RX_HOSP_SURG_APPR_2010_F=Endo_Lap_to_Open
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 2 0 1 0 1 1
24 2 0 1 0 1 1
36 2 0 1 0 1 1
48 2 0 1 0 1 1
60 2 0 1 0 1 1
RX_HOSP_SURG_APPR_2010_F=Open_Unknown
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 515 14 0.975 0.00672 0.961 0.988
24 429 18 0.938 0.01066 0.917 0.959
36 317 15 0.901 0.01388 0.874 0.929
48 235 6 0.881 0.01585 0.850 0.913
60 158 14 0.821 0.02141 0.780 0.864
## Univariable Cox Proportional Hazard Model for: RX_HOSP_SURG_APPR_2010_F
Loglik converged before variable 1,4 ; beta may be infinite. X matrix deemed to be singular; variable 2 6
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ RX_HOSP_SURG_APPR_2010_F, data = data)
n= 738, number of events= 119
(622 observations deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
RX_HOSP_SURG_APPR_2010_FRobot_Assist -1.648e+01 6.934e-08 4.595e+03 -0.004 0.9971
RX_HOSP_SURG_APPR_2010_FRobot_to_Open NA NA 0.000e+00 NA NA
RX_HOSP_SURG_APPR_2010_FEndo_Lap -2.262e+00 1.041e-01 1.014e+00 -2.231 0.0257 *
RX_HOSP_SURG_APPR_2010_FEndo_Lap_to_Open -1.647e+01 7.063e-08 2.325e+03 -0.007 0.9943
RX_HOSP_SURG_APPR_2010_FOpen_Unknown -1.316e+00 2.682e-01 2.007e-01 -6.557 5.5e-11 ***
RX_HOSP_SURG_APPR_2010_FUnknown NA NA 0.000e+00 NA NA
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
RX_HOSP_SURG_APPR_2010_FRobot_Assist 6.934e-08 1.442e+07 0.00000 Inf
RX_HOSP_SURG_APPR_2010_FRobot_to_Open NA NA NA NA
RX_HOSP_SURG_APPR_2010_FEndo_Lap 1.041e-01 9.604e+00 0.01427 0.7596
RX_HOSP_SURG_APPR_2010_FEndo_Lap_to_Open 7.063e-08 1.416e+07 0.00000 Inf
RX_HOSP_SURG_APPR_2010_FOpen_Unknown 2.682e-01 3.728e+00 0.18101 0.3975
RX_HOSP_SURG_APPR_2010_FUnknown NA NA NA NA
Concordance= 0.628 (se = 0.019 )
Rsquare= 0.053 (max possible= 0.851 )
Likelihood ratio test= 40.19 on 4 df, p=3.947e-08
Wald test = 44.83 on 4 df, p=4.322e-09
Score (logrank) test = 53.43 on 4 df, p=6.942e-11
Transformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 3 rows containing missing values (geom_errorbar).Removed 7 rows containing missing values (geom_text).Removed 7 rows containing missing values (geom_text).Removed 7 rows containing missing values (geom_text).Removed 7 rows containing missing values (geom_text).Removed 7 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).
## Unadjusted Kaplan Meier Overall Survival Curve for: RX_HOSP_SURG_APPR_2010_F



Surgery Radiation Sequence
uni_var(test_var = "SURG_RAD_SEQ", data_imp = data)
_________________________________________________
## SURG_RAD_SEQ
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SURG_RAD_SEQ, data = data)
n events median 0.95LCL 0.95UCL
SURG_RAD_SEQ=Surg Alone 1158 241 155.4 141.8 NA
SURG_RAD_SEQ=Surg then Rad 23 9 125.6 39.2 NA
SURG_RAD_SEQ=Rad Alone 52 26 55.2 40.0 NA
SURG_RAD_SEQ=No Treatment 105 47 68.5 48.6 81.8
SURG_RAD_SEQ=Other 22 6 131.9 82.2 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SURG_RAD_SEQ, data = data)
SURG_RAD_SEQ=Surg Alone
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1018 28 0.974 0.00477 0.965 0.984
24 911 27 0.948 0.00689 0.934 0.961
36 771 31 0.913 0.00902 0.896 0.931
48 649 28 0.878 0.01087 0.857 0.899
60 538 38 0.823 0.01333 0.797 0.850
120 112 77 0.624 0.02388 0.579 0.673
SURG_RAD_SEQ=Surg then Rad
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 23 0 1.000 0.000 1.000 1.000
24 14 6 0.710 0.100 0.538 0.936
36 11 0 0.710 0.100 0.538 0.936
48 10 1 0.645 0.110 0.462 0.901
60 10 0 0.645 0.110 0.462 0.901
120 4 1 0.581 0.116 0.392 0.860
SURG_RAD_SEQ=Rad Alone
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 43 8 0.846 0.0500 0.7536 0.950
24 31 6 0.722 0.0635 0.6077 0.858
36 23 3 0.646 0.0703 0.5221 0.800
48 16 2 0.585 0.0759 0.4533 0.754
60 10 3 0.452 0.0894 0.3072 0.666
120 1 4 0.211 0.1053 0.0795 0.561
SURG_RAD_SEQ=No Treatment
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 82 11 0.889 0.0316 0.829 0.953
24 58 13 0.734 0.0471 0.647 0.833
36 42 6 0.648 0.0532 0.552 0.761
48 34 2 0.613 0.0557 0.513 0.733
60 20 3 0.546 0.0621 0.436 0.682
120 3 10 0.214 0.0755 0.107 0.427
SURG_RAD_SEQ=Other
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 18 1 0.947 0.0512 0.852 1.000
24 18 0 0.947 0.0512 0.852 1.000
36 17 0 0.947 0.0512 0.852 1.000
48 15 1 0.888 0.0748 0.753 1.000
60 14 0 0.888 0.0748 0.753 1.000
120 5 3 0.680 0.1203 0.481 0.962
## Univariable Cox Proportional Hazard Model for: SURG_RAD_SEQ
X matrix deemed to be singular; variable 5 6
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SURG_RAD_SEQ, data = data)
n= 1360, number of events= 329
coef exp(coef) se(coef) z Pr(>|z|)
SURG_RAD_SEQSurg then Rad 0.62470 1.86768 0.33984 1.838 0.066 .
SURG_RAD_SEQRad Alone 1.41191 4.10379 0.20785 6.793 1.1e-11 ***
SURG_RAD_SEQNo Treatment 1.33626 3.80477 0.16093 8.303 < 2e-16 ***
SURG_RAD_SEQOther -0.02054 0.97967 0.41436 -0.050 0.960
SURG_RAD_SEQRad before and after Surg NA NA 0.00000 NA NA
SURG_RAD_SEQRad then Surg NA NA 0.00000 NA NA
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
SURG_RAD_SEQSurg then Rad 1.8677 0.5354 0.9595 3.636
SURG_RAD_SEQRad Alone 4.1038 0.2437 2.7307 6.167
SURG_RAD_SEQNo Treatment 3.8048 0.2628 2.7755 5.216
SURG_RAD_SEQOther 0.9797 1.0207 0.4349 2.207
SURG_RAD_SEQRad before and after Surg NA NA NA NA
SURG_RAD_SEQRad then Surg NA NA NA NA
Concordance= 0.602 (se = 0.01 )
Rsquare= 0.057 (max possible= 0.956 )
Likelihood ratio test= 80.25 on 4 df, p=1.11e-16
Wald test = 102.8 on 4 df, p=0
Score (logrank) test = 118.9 on 4 df, p=0
Removed 3 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: SURG_RAD_SEQ



Surgery Yes/No
uni_var(test_var = "SURGERY_YN", data_imp = data)
_________________________________________________
## SURGERY_YN
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SURGERY_YN, data = data)
n events median 0.95LCL 0.95UCL
SURGERY_YN=No 156 72 61.9 53.8 76.1
SURGERY_YN=Ukn 8 3 70.2 40.4 NA
SURGERY_YN=Yes 1196 254 155.4 141.8 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SURGERY_YN, data = data)
SURGERY_YN=No
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 124 19 0.873 0.0273 0.821 0.928
24 89 18 0.735 0.0378 0.664 0.813
36 65 9 0.651 0.0426 0.573 0.740
48 50 4 0.606 0.0451 0.524 0.702
60 30 6 0.516 0.0515 0.425 0.628
120 4 14 0.214 0.0619 0.122 0.377
SURGERY_YN=Ukn
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 6 0 1.000 0.000 1.000 1
24 5 1 0.833 0.152 0.583 1
36 5 0 0.833 0.152 0.583 1
48 3 1 0.625 0.213 0.320 1
60 3 0 0.625 0.213 0.320 1
SURGERY_YN=Yes
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1054 29 0.974 0.00470 0.965 0.984
24 938 33 0.943 0.00709 0.929 0.957
36 794 31 0.909 0.00903 0.892 0.927
48 671 29 0.874 0.01081 0.853 0.895
60 559 38 0.821 0.01310 0.796 0.847
120 121 80 0.628 0.02295 0.585 0.675
## Univariable Cox Proportional Hazard Model for: SURGERY_YN
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SURGERY_YN, data = data)
n= 1360, number of events= 329
coef exp(coef) se(coef) z Pr(>|z|)
SURGERY_YNUkn -0.3188 0.7270 0.5896 -0.541 0.589
SURGERY_YNYes -1.3391 0.2621 0.1355 -9.884 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
SURGERY_YNUkn 0.7270 1.376 0.2289 2.3090
SURGERY_YNYes 0.2621 3.816 0.2010 0.3418
Concordance= 0.593 (se = 0.009 )
Rsquare= 0.055 (max possible= 0.956 )
Likelihood ratio test= 77.15 on 2 df, p=0
Wald test = 99.16 on 2 df, p=0
Score (logrank) test = 114.3 on 2 df, p=0
no non-missing arguments to min; returning Infno non-missing arguments to max; returning -InfTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 1 rows containing missing values (geom_errorbar).Removed 1 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).
## Unadjusted Kaplan Meier Overall Survival Curve for: SURGERY_YN



Radiation Yes/No
uni_var(test_var = "RADIATION_YN", data_imp = data)
_________________________________________________
## RADIATION_YN
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ RADIATION_YN, data = data)
17 observations deleted due to missingness
n events median 0.95LCL 0.95UCL
RADIATION_YN=No 1268 290 149.6 128.5 NA
RADIATION_YN=Yes 75 35 61.9 40.6 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ RADIATION_YN, data = data)
17 observations deleted due to missingness
RADIATION_YN=No
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1104 39 0.968 0.00512 0.958 0.978
24 973 40 0.931 0.00752 0.916 0.946
36 817 37 0.893 0.00947 0.874 0.912
48 685 31 0.857 0.01110 0.835 0.879
60 560 41 0.802 0.01330 0.776 0.828
120 115 88 0.595 0.02306 0.551 0.642
RADIATION_YN=Yes
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 66 8 0.893 0.0356 0.826 0.966
24 45 12 0.718 0.0538 0.620 0.832
36 34 3 0.666 0.0578 0.561 0.789
48 26 3 0.604 0.0625 0.493 0.740
60 20 3 0.526 0.0687 0.407 0.680
120 5 5 0.367 0.0803 0.239 0.563
## Univariable Cox Proportional Hazard Model for: RADIATION_YN
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ RADIATION_YN, data = data)
n= 1343, number of events= 325
(17 observations deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
RADIATION_YNYes 1.0029 2.7262 0.1793 5.592 2.25e-08 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
RADIATION_YNYes 2.726 0.3668 1.918 3.874
Concordance= 0.544 (se = 0.007 )
Rsquare= 0.018 (max possible= 0.955 )
Likelihood ratio test= 24.23 on 1 df, p=8.545e-07
Wald test = 31.27 on 1 df, p=2.246e-08
Score (logrank) test = 33.97 on 1 df, p=5.587e-09
## Unadjusted Kaplan Meier Overall Survival Curve for: RADIATION_YN



Chemo Yes/No
uni_var(test_var = "CHEMO_YN", data_imp = data)
_________________________________________________
## CHEMO_YN
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ CHEMO_YN, data = data)
n events median 0.95LCL 0.95UCL
CHEMO_YN=No 1287 298 149.6 128.2 NA
CHEMO_YN=Yes 31 20 30.3 21.9 NA
CHEMO_YN=Ukn 42 11 NA 101.5 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ CHEMO_YN, data = data)
CHEMO_YN=No
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1119 44 0.964 0.00534 0.954 0.974
24 981 42 0.926 0.00770 0.911 0.941
36 823 34 0.891 0.00944 0.873 0.910
48 691 30 0.857 0.01100 0.835 0.878
60 566 43 0.800 0.01327 0.774 0.826
120 117 89 0.596 0.02278 0.553 0.642
CHEMO_YN=Yes
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 26 3 0.898 0.0560 0.7942 1.000
24 15 9 0.581 0.0927 0.4247 0.794
36 10 3 0.456 0.0968 0.3011 0.692
48 5 3 0.299 0.0981 0.1576 0.569
60 2 1 0.200 0.1045 0.0716 0.557
CHEMO_YN=Ukn
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 39 1 0.975 0.0247 0.928 1.000
24 36 1 0.950 0.0345 0.885 1.000
36 31 3 0.868 0.0553 0.766 0.983
48 28 1 0.839 0.0605 0.728 0.966
60 24 0 0.839 0.0605 0.728 0.966
120 8 5 0.618 0.0975 0.453 0.842
## Univariable Cox Proportional Hazard Model for: CHEMO_YN
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ CHEMO_YN, data = data)
n= 1360, number of events= 329
coef exp(coef) se(coef) z Pr(>|z|)
CHEMO_YNYes 1.8818 6.5650 0.2352 8.001 1.22e-15 ***
CHEMO_YNUkn -0.1860 0.8302 0.3079 -0.604 0.546
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
CHEMO_YNYes 6.5650 0.1523 4.1403 10.410
CHEMO_YNUkn 0.8302 1.2045 0.4541 1.518
Concordance= 0.535 (se = 0.007 )
Rsquare= 0.029 (max possible= 0.956 )
Likelihood ratio test= 40.5 on 2 df, p=1.605e-09
Wald test = 64.85 on 2 df, p=8.216e-15
Score (logrank) test = 86.36 on 2 df, p=0
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: CHEMO_YN



Treatment Yes/No
uni_var(test_var = "Tx_YN", data_imp = data)
_________________________________________________
## Tx_YN
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ Tx_YN, data = data)
42 observations deleted due to missingness
n events median 0.95LCL 0.95UCL
Tx_YN=FALSE 94 40 72.8 55.7 106
Tx_YN=TRUE 1224 278 149.6 130.5 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ Tx_YN, data = data)
42 observations deleted due to missingness
Tx_YN=FALSE
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 73 10 0.888 0.0335 0.825 0.956
24 52 10 0.752 0.0488 0.662 0.854
36 37 5 0.669 0.0559 0.568 0.788
48 31 1 0.649 0.0577 0.545 0.772
60 19 3 0.573 0.0658 0.457 0.718
120 3 9 0.238 0.0829 0.121 0.471
Tx_YN=TRUE
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1072 37 0.968 0.00517 0.958 0.978
24 944 41 0.930 0.00771 0.915 0.945
36 796 32 0.896 0.00949 0.877 0.914
48 665 32 0.857 0.01125 0.835 0.880
60 549 41 0.801 0.01352 0.775 0.828
120 114 81 0.606 0.02313 0.563 0.653
## Univariable Cox Proportional Hazard Model for: Tx_YN
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ Tx_YN, data = data)
n= 1318, number of events= 318
(42 observations deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
Tx_YNTRUE -1.1354 0.3213 0.1702 -6.671 2.54e-11 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
Tx_YNTRUE 0.3213 3.112 0.2302 0.4485
Concordance= 0.547 (se = 0.007 )
Rsquare= 0.025 (max possible= 0.954 )
Likelihood ratio test= 33.83 on 1 df, p=6.014e-09
Wald test = 44.5 on 1 df, p=2.539e-11
Score (logrank) test = 49.46 on 1 df, p=2.025e-12
## Unadjusted Kaplan Meier Overall Survival Curve for: Tx_YN



Tumor specific Variables
Node Size
Cox Proportional Hazard Ratio
Model #1
Full analysis
model_one <- coxph(Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 0)
~ SURG_RAD_SEQ + INSURANCE_F + AGE + SEX_F + RACE_F + INCOME_F + U_R_F +
FACILITY_TYPE_F + FACILITY_LOCATION_F + EDUCATION_F,
data = data)
Loglik converged before variable 10 ; beta may be infinite. X matrix deemed to be singular; variable 5 6
model_one %>% summary()
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SURG_RAD_SEQ + INSURANCE_F + AGE + SEX_F + RACE_F +
INCOME_F + U_R_F + FACILITY_TYPE_F + FACILITY_LOCATION_F +
EDUCATION_F, data = data)
n= 1306, number of events= 320
(54 observations deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
SURG_RAD_SEQSurg then Rad 7.095e-01 2.033e+00 3.659e-01 1.939 0.05252 .
SURG_RAD_SEQRad Alone 7.361e-01 2.088e+00 2.342e-01 3.143 0.00167 **
SURG_RAD_SEQNo Treatment 8.477e-01 2.334e+00 1.788e-01 4.741 2.13e-06 ***
SURG_RAD_SEQOther -3.561e-01 7.004e-01 4.744e-01 -0.750 0.45297
SURG_RAD_SEQRad before and after Surg NA NA 0.000e+00 NA NA
SURG_RAD_SEQRad then Surg NA NA 0.000e+00 NA NA
INSURANCE_FNone 8.065e-01 2.240e+00 5.304e-01 1.521 0.12833
INSURANCE_FMedicaid -2.998e-01 7.409e-01 6.605e-01 -0.454 0.64986
INSURANCE_FMedicare 1.934e-01 1.213e+00 1.713e-01 1.129 0.25909
INSURANCE_FOther Government -1.292e+01 2.445e-06 9.794e+02 -0.013 0.98947
INSURANCE_FUnknown -1.468e-01 8.635e-01 6.105e-01 -0.240 0.81000
AGE 8.308e-02 1.087e+00 7.292e-03 11.393 < 2e-16 ***
SEX_FFemale -4.088e-01 6.644e-01 1.412e-01 -2.895 0.00380 **
RACE_FBlack 9.557e-01 2.600e+00 3.960e-01 2.413 0.01581 *
RACE_FOther/Unk 3.420e-01 1.408e+00 3.254e-01 1.051 0.29327
RACE_FAsian -5.815e-01 5.591e-01 4.019e-01 -1.447 0.14796
INCOME_F$38,000 - $47,999 -1.102e-01 8.956e-01 2.130e-01 -0.517 0.60485
INCOME_F$48,000 - $62,999 1.069e-02 1.011e+00 2.236e-01 0.048 0.96187
INCOME_F$63,000 + 4.084e-02 1.042e+00 2.508e-01 0.163 0.87065
U_R_FUrban 1.305e-01 1.139e+00 1.802e-01 0.724 0.46895
U_R_FRural -7.241e-01 4.847e-01 4.462e-01 -1.623 0.10459
FACILITY_TYPE_FComprehensive Comm Ca Program 1.846e-01 1.203e+00 3.885e-01 0.475 0.63475
FACILITY_TYPE_FAcademic/Research Program -1.418e-03 9.986e-01 3.872e-01 -0.004 0.99708
FACILITY_TYPE_FIntegrated Network Ca Program 3.764e-01 1.457e+00 4.014e-01 0.938 0.34846
FACILITY_LOCATION_FMiddle Atlantic -3.683e-01 6.919e-01 3.001e-01 -1.227 0.21976
FACILITY_LOCATION_FSouth Atlantic -5.749e-01 5.627e-01 3.100e-01 -1.855 0.06365 .
FACILITY_LOCATION_FEast North Central -2.367e-01 7.892e-01 2.966e-01 -0.798 0.42480
FACILITY_LOCATION_FEast South Central -4.062e-01 6.662e-01 3.659e-01 -1.110 0.26698
FACILITY_LOCATION_FWest North Central 1.014e-02 1.010e+00 3.132e-01 0.032 0.97417
FACILITY_LOCATION_FWest South Central -2.580e-01 7.726e-01 3.393e-01 -0.760 0.44703
FACILITY_LOCATION_FMountain -1.218e-02 9.879e-01 3.366e-01 -0.036 0.97113
FACILITY_LOCATION_FPacific -2.346e-01 7.909e-01 3.207e-01 -0.731 0.46448
EDUCATION_F13 - 20.9% -2.889e-01 7.491e-01 2.182e-01 -1.324 0.18545
EDUCATION_F7 - 12.9% -2.523e-01 7.770e-01 2.239e-01 -1.127 0.25986
EDUCATION_FLess than 7% -5.739e-01 5.633e-01 2.605e-01 -2.203 0.02761 *
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
SURG_RAD_SEQSurg then Rad 2.033e+00 4.919e-01 0.9923 4.1651
SURG_RAD_SEQRad Alone 2.088e+00 4.790e-01 1.3193 3.3038
SURG_RAD_SEQNo Treatment 2.334e+00 4.284e-01 1.6442 3.3140
SURG_RAD_SEQOther 7.004e-01 1.428e+00 0.2764 1.7750
SURG_RAD_SEQRad before and after Surg NA NA NA NA
SURG_RAD_SEQRad then Surg NA NA NA NA
INSURANCE_FNone 2.240e+00 4.464e-01 0.7922 6.3345
INSURANCE_FMedicaid 7.409e-01 1.350e+00 0.2030 2.7039
INSURANCE_FMedicare 1.213e+00 8.242e-01 0.8672 1.6975
INSURANCE_FOther Government 2.445e-06 4.090e+05 0.0000 Inf
INSURANCE_FUnknown 8.635e-01 1.158e+00 0.2610 2.8571
AGE 1.087e+00 9.203e-01 1.0712 1.1023
SEX_FFemale 6.644e-01 1.505e+00 0.5038 0.8763
RACE_FBlack 2.600e+00 3.846e-01 1.1966 5.6510
RACE_FOther/Unk 1.408e+00 7.104e-01 0.7440 2.6637
RACE_FAsian 5.591e-01 1.789e+00 0.2543 1.2291
INCOME_F$38,000 - $47,999 8.956e-01 1.117e+00 0.5900 1.3597
INCOME_F$48,000 - $62,999 1.011e+00 9.894e-01 0.6520 1.5668
INCOME_F$63,000 + 1.042e+00 9.600e-01 0.6372 1.7030
U_R_FUrban 1.139e+00 8.777e-01 0.8004 1.6219
U_R_FRural 4.847e-01 2.063e+00 0.2022 1.1622
FACILITY_TYPE_FComprehensive Comm Ca Program 1.203e+00 8.315e-01 0.5616 2.5757
FACILITY_TYPE_FAcademic/Research Program 9.986e-01 1.001e+00 0.4676 2.1327
FACILITY_TYPE_FIntegrated Network Ca Program 1.457e+00 6.864e-01 0.6634 3.1999
FACILITY_LOCATION_FMiddle Atlantic 6.919e-01 1.445e+00 0.3842 1.2460
FACILITY_LOCATION_FSouth Atlantic 5.627e-01 1.777e+00 0.3065 1.0332
FACILITY_LOCATION_FEast North Central 7.892e-01 1.267e+00 0.4413 1.4114
FACILITY_LOCATION_FEast South Central 6.662e-01 1.501e+00 0.3252 1.3648
FACILITY_LOCATION_FWest North Central 1.010e+00 9.899e-01 0.5468 1.8664
FACILITY_LOCATION_FWest South Central 7.726e-01 1.294e+00 0.3973 1.5024
FACILITY_LOCATION_FMountain 9.879e-01 1.012e+00 0.5108 1.9107
FACILITY_LOCATION_FPacific 7.909e-01 1.264e+00 0.4218 1.4829
EDUCATION_F13 - 20.9% 7.491e-01 1.335e+00 0.4885 1.1488
EDUCATION_F7 - 12.9% 7.770e-01 1.287e+00 0.5010 1.2051
EDUCATION_FLess than 7% 5.633e-01 1.775e+00 0.3381 0.9387
Concordance= 0.769 (se = 0.018 )
Rsquare= 0.218 (max possible= 0.956 )
Likelihood ratio test= 321.2 on 33 df, p=0
Wald test = 282.4 on 33 df, p=0
Score (logrank) test = 323.3 on 33 df, p=0
Summary of Model
model_one %>%
tidy(., exponentiate = TRUE) %>%
select(term, estimate, conf.low, conf.high, p.value) %>%
rename(Variable = term,
Hazard_Ratio = estimate) %>%
tbl_df %>%
print(n = nrow(.))
Prediction Logistic Regression Models
Surgery
no_Ukns <- data %>%
filter(SURGERY_YN != "Ukn") %>%
droplevels() %>%
mutate(SURGERY_YN = as.logical(SURGERY_YN))
fit_surg <- glm(SURG_TF ~ AGE_F + SEX_F + RACE_F + INCOME_F + U_R_F +
FACILITY_TYPE_F + FACILITY_LOCATION_F + EDUCATION_F + EXPN_GROUP,
data = no_Ukns)
summary(fit_surg)
Call:
glm(formula = SURG_TF ~ AGE_F + SEX_F + RACE_F + INCOME_F + U_R_F +
FACILITY_TYPE_F + FACILITY_LOCATION_F + EDUCATION_F + EXPN_GROUP,
data = no_Ukns)
Deviance Residuals:
Min 1Q Median 3Q Max
-1.04332 0.02216 0.08885 0.14441 0.46220
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.445496 0.087695 5.080 4.34e-07 ***
AGE_F(54,64] 0.013753 0.034559 0.398 0.690740
AGE_F(64,74] -0.003370 0.032442 -0.104 0.917276
AGE_F(74,100] -0.084306 0.031430 -2.682 0.007405 **
SEX_FFemale 0.105244 0.022526 4.672 3.30e-06 ***
RACE_FBlack -0.067798 0.064178 -1.056 0.290985
RACE_FOther/Unk -0.023444 0.055262 -0.424 0.671470
RACE_FAsian 0.016034 0.042381 0.378 0.705245
INCOME_F$38,000 - $47,999 0.049473 0.033565 1.474 0.140738
INCOME_F$48,000 - $62,999 0.024591 0.035413 0.694 0.487545
INCOME_F$63,000 + 0.010826 0.039102 0.277 0.781932
U_R_FUrban -0.006702 0.027962 -0.240 0.810606
U_R_FRural -0.015718 0.064070 -0.245 0.806237
FACILITY_TYPE_FComprehensive Comm Ca Program 0.204955 0.059591 3.439 0.000602 ***
FACILITY_TYPE_FAcademic/Research Program 0.244610 0.059071 4.141 3.69e-05 ***
FACILITY_TYPE_FIntegrated Network Ca Program 0.238439 0.062503 3.815 0.000143 ***
FACILITY_LOCATION_FMiddle Atlantic 0.057863 0.050261 1.151 0.249850
FACILITY_LOCATION_FSouth Atlantic 0.076820 0.050921 1.509 0.131651
FACILITY_LOCATION_FEast North Central 0.063001 0.051123 1.232 0.218052
FACILITY_LOCATION_FEast South Central 0.043943 0.058719 0.748 0.454378
FACILITY_LOCATION_FWest North Central 0.036685 0.053834 0.681 0.495711
FACILITY_LOCATION_FWest South Central 0.066752 0.057315 1.165 0.244380
FACILITY_LOCATION_FMountain 0.006883 0.059313 0.116 0.907634
FACILITY_LOCATION_FPacific 0.051169 0.053086 0.964 0.335280
EDUCATION_F13 - 20.9% 0.024341 0.032962 0.738 0.460381
EDUCATION_F7 - 12.9% -0.000791 0.034265 -0.023 0.981585
EDUCATION_FLess than 7% 0.042701 0.038625 1.106 0.269144
EXPN_GROUPPre-Expansion 0.083581 0.025082 3.332 0.000886 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for gaussian family taken to be 0.09760238)
Null deviance: 134.21 on 1298 degrees of freedom
Residual deviance: 124.05 on 1271 degrees of freedom
(53 observations deleted due to missingness)
AIC: 693.51
Number of Fisher Scoring iterations: 2
exp(cbind("Odds ratio" = coef(fit_surg), confint.default(fit_surg, level = 0.95)))
Odds ratio 2.5 % 97.5 %
(Intercept) 1.5612650 1.3147115 1.8540558
AGE_F(54,64] 1.0138477 0.9474485 1.0849002
AGE_F(64,74] 0.9966353 0.9352361 1.0620655
AGE_F(74,100] 0.9191496 0.8642376 0.9775507
SEX_FFemale 1.1109818 1.0629995 1.1611300
RACE_FBlack 0.9344493 0.8240002 1.0597030
RACE_FOther/Unk 0.9768287 0.8765545 1.0885739
RACE_FAsian 1.0161633 0.9351667 1.1041752
INCOME_F$38,000 - $47,999 1.0507173 0.9838200 1.1221634
INCOME_F$48,000 - $62,999 1.0248964 0.9561728 1.0985594
INCOME_F$63,000 + 1.0108846 0.9363063 1.0914032
U_R_FUrban 0.9933201 0.9403471 1.0492774
U_R_FRural 0.9844044 0.8682352 1.1161170
FACILITY_TYPE_FComprehensive Comm Ca Program 1.2274698 1.0921608 1.3795424
FACILITY_TYPE_FAcademic/Research Program 1.2771233 1.1374991 1.4338859
FACILITY_TYPE_FIntegrated Network Ca Program 1.2692659 1.1229229 1.4346808
FACILITY_LOCATION_FMiddle Atlantic 1.0595695 0.9601676 1.1692621
FACILITY_LOCATION_FSouth Atlantic 1.0798475 0.9772778 1.1931825
FACILITY_LOCATION_FEast North Central 1.0650276 0.9634847 1.1772722
FACILITY_LOCATION_FEast South Central 1.0449231 0.9313279 1.1723738
FACILITY_LOCATION_FWest North Central 1.0373665 0.9334875 1.1528052
FACILITY_LOCATION_FWest South Central 1.0690298 0.9554400 1.1961241
FACILITY_LOCATION_FMountain 1.0069069 0.8963996 1.1310374
FACILITY_LOCATION_FPacific 1.0525013 0.9484966 1.1679103
EDUCATION_F13 - 20.9% 1.0246391 0.9605362 1.0930200
EDUCATION_F7 - 12.9% 0.9992093 0.9343085 1.0686184
EDUCATION_FLess than 7% 1.0436254 0.9675357 1.1256989
EXPN_GROUPPre-Expansion 1.0871728 1.0350199 1.1419537
Same but for Breast
prim_site_text <- data_frame(PRIMARY_SITE =
c(#breast
"C500", "C501", "C502","C503","C504","C505",
"C506","C508","C509"),
SITE_TEXT = c(
#breast
"C50.0 Nipple",
"C50.1 Central portion of breast",
"C50.2 Upper-inner quadrant breast",
"C50.3 Lower-inner quadrant breast",
"C50.4 Upper-outer quadrant breast",
"C50.5 Lower-outer quadrant",
"C50.6 Axillary tail of breast",
"C50.8 Overlapping lesion of breast",
"C50.9 Breast NOS"))
dat <- merge(dat, prim_site_text, by = "PRIMARY_SITE", all.x = TRUE)
rm(prim_site_text)
# convert numeric variables from character class to numeric class
num_vars <- c("AGE", "CROWFLY", "TUMOR_SIZE", "DX_STAGING_PROC_DAYS", "DX_RX_STARTED_DAYS", "DX_SURG_STARTED_DAYS",
"DX_DEFSURG_STARTED_DAYS", "SURG_DISCHARGE_DAYS", "DX_RAD_STARTED_DAYS", "RAD_REGIONAL_DOSE_CGY",
"RAD_BOOST_DOSE_CGY", "RAD_ELAPSED_RX_DAYS", "DX_SYSTEMIC_STARTED_DAYS", "DX_CHEMO_STARTED_DAYS",
"DX_HORMONE_STARTED_DAYS", "DX_OTHER_STARTED_DAYS", "DX_LASTCONTACT_DEATH_MONTHS",
"RAD_NUM_TREAT_VOL")
dat[num_vars] <- lapply(dat[num_vars], as.numeric)
# convert factor variables from character class to factor class
vars <- names(dat)
fact_vars <- vars[!(vars %in% num_vars)] # basically all of the non-numerics
dat[fact_vars] <- lapply(dat[fact_vars], as.character)
dat[fact_vars] <- lapply(dat[fact_vars], as.factor)
dat <- dat %>%
mutate(FACILITY_TYPE_F = fct_recode(FACILITY_TYPE_CD,
"Community Cancer Program" = "1",
"Comprehensive Comm Ca Program" = "2",
"Academic/Research Program" = "3",
"Integrated Network Ca Program" = "4",
"Other" = "9")) %>%
mutate(FACILITY_LOCATION_F = fct_recode(FACILITY_LOCATION_CD,
"New England" = "1",
"Middle Atlantic" = "2",
"South Atlantic" = "3",
"East North Central" = "4",
"East South Central" = "5",
"West North Central" = "6",
"West South Central" = "7",
"Mountain" = "8",
"Pacific" = "9",
"out of US" = "0")) %>%
mutate(FACILITY_GEOGRAPHY = fct_collapse(FACILITY_LOCATION_CD,
"Northeast" = c("1", "2"),
"South" = c("3", "7"),
"Midwest" = c("4", "5", "6"),
"West" = c("8", "9"))) %>%
mutate(AGE_F = cut(AGE, c(0, 54, 64, 74, 100))) %>%
mutate(AGE_40 = cut(AGE, c(0, 40, 100))) %>%
mutate(SEX_F = fct_recode(SEX,
"Male" = "1",
"Female" = "2")) %>%
mutate(RACE_F = fct_collapse(RACE,
"White" = c("01"),
"Black" = c("02"),
"Asian" = c("04", "05", "06", "07", "08", "10", "11", "12", "13", "14", "15",
"16", "17", "20", "21", "22", "25", "26", "27", "28", "30", "31",
"32", "96", "97"),
"Other/Unk" = c("03", "98", "99"))) %>%
mutate(HISPANIC = fct_collapse(SPANISH_HISPANIC_ORIGIN,
"Yes" = c("1", "2", "3", "4", "5", "6", "7", "8"),
"No" = c("0"),
"Unknown" = c("9"))) %>%
mutate(INSURANCE_F = fct_recode(INSURANCE_STATUS,
"None" = "0",
"Private" = "1",
"Medicaid" = "2",
"Medicare" = "3",
"Other Government" = "4",
"Unknown" = "9")) %>%
mutate(INSURANCE_F = fct_relevel(INSURANCE_F,
"Private")) %>%
mutate(INCOME_F = fct_recode(MED_INC_QUAR_12,
"Less than $38,000" = "1",
"$38,000 - $47,999" = "2",
"$48,000 - $62,999" = "3",
"$63,000 +" = "4")) %>%
mutate(EDUCATION_F = fct_recode(NO_HSD_QUAR_12,
"21% or more" = "1",
"13 - 20.9%" = "2",
"7 - 12.9%" = "3",
"Less than 7%" = "4")) %>%
mutate(U_R_F = fct_collapse(UR_CD_13,
"Metro" = c("1", "2", "3"),
"Urban" = c("4", "5", "6", "7"),
"Rural" = c("8", "9"))) %>%
mutate(CLASS_OF_CASE_F = fct_collapse(CLASS_OF_CASE,
All_Part_Prim = c("10", "11", "12", "13",
"14", "20", "21", "22"),
Other_Facility = c("00"))) %>%
mutate(GRADE_F = fct_recode(GRADE,
"Gr I: Well Diff" = "1",
"Gr II: Mod Diff" = "2",
"Gr III: Poor Diff" = "3",
"Gr IV: Undiff/Anaplastic" = "4",
"NA/Unkown" = "9")) %>%
mutate(HISTOLOGY_F = fct_infreq(HISTOLOGY)) %>%
mutate(HISTOLOGY_F = factor(HISTOLOGY_F)) %>%
mutate(HISTOLOGY_F_LIM = fct_lump(HISTOLOGY_F, prop = 0.05)) %>%
mutate(TNM_CLIN_T = fct_recode(TNM_CLIN_T,
"N_A" = "88")) %>%
mutate(TNM_CLIN_T = fct_relevel(TNM_CLIN_T,
"1")) %>%
mutate(TNM_CLIN_N = fct_recode(TNM_CLIN_N,
"N_A" = "88")) %>%
mutate(TNM_CLIN_M = fct_recode(TNM_CLIN_M,
"N_A" = "88")) %>%
mutate(TNM_PATH_T = fct_recode(TNM_PATH_T,
"N_A" = "88")) %>%
mutate(TNM_PATH_T = fct_relevel(TNM_PATH_T,
"1")) %>%
mutate(TNM_PATH_N = fct_recode(TNM_PATH_N,
"N_A" = "88")) %>%
mutate(TNM_PATH_M = fct_recode(TNM_PATH_M,
"N_A" = "88")) %>%
mutate(TNM_CLIN_STAGE_GROUP = fct_recode(TNM_CLIN_STAGE_GROUP,
"N_A" = "88")) %>%
mutate(TNM_PATH_STAGE_GROUP = fct_recode(TNM_PATH_STAGE_GROUP,
"N_A" = "88")) %>%
mutate(MARGINS = fct_recode(RX_SUMM_SURGICAL_MARGINS,
"No Residual" = "0",
"Residual, NOS" = "1",
"Microscopic Resid" = "2",
"Macroscopic Resid" = "3",
"Not evaluable" = "7",
"No surg" = "8",
"Unknown" = "9")) %>%
mutate(MARGINS_YN = fct_collapse(RX_SUMM_SURGICAL_MARGINS,
"Yes" = c("1", "2", "3"),
"No" = c("0"),
"No surg/Unk/NA" = c("7", "8", "9"))) %>%
mutate(READM_HOSP_30_DAYS_F = fct_recode(READM_HOSP_30_DAYS,
"No_Surg_or_No_Readmit" = "0",
"Unplan_Readmit_Same" = "1",
"Plan_Readmit_Same" = "2",
"PlanUnplan_Same" = "3",
"Unknown" = "4")) %>%
mutate(RX_SUMM_RADIATION_F = fct_recode(RX_SUMM_RADIATION,
"None" = "0",
"Beam Radiation" = "1",
"Radioactive Implants" = "2",
"Radioisotopes" = "3",
"Beam + Imp or Isotopes" = "4",
"Radiation, NOS" = "5",
"Unknown" = "9")) %>%
mutate(PUF_30_DAY_MORT_CD_F = fct_recode(PUF_30_DAY_MORT_CD,
"Alive_30" = "0",
"Dead_30" = "1",
"Unknown" = "9")) %>%
mutate(PUF_90_DAY_MORT_CD_F = fct_recode(PUF_90_DAY_MORT_CD,
"Alive_90" = "0",
"Dead_90" = "1",
"Unknown" = "9")) %>%
mutate(LYMPH_VASCULAR_INVASION_F = fct_recode(LYMPH_VASCULAR_INVASION,
"Neg_LymphVasc_Inv" = "0",
"Pos_LumphVasc_Inv" = "1",
"N_A" = "8",
"Unknown" = "9")) %>%
mutate(RX_HOSP_SURG_APPR_2010_F = fct_recode(RX_HOSP_SURG_APPR_2010,
"No_Surg" = "0",
"Robot_Assist" = "1",
"Robot_to_Open" = "2",
"Endo_Lap" = "3",
"Endo_Lap_to_Open" = "4",
"Open_Unknown" = "5",
"Unknown" = "9")) %>%
mutate(All = "All") %>%
mutate(All = factor(All)) %>%
mutate(REASON_FOR_NO_SURGERY_F = fct_recode(REASON_FOR_NO_SURGERY,
"Surg performed" = "0",
"Surg not recommended" = "1",
"No surg due to pt factors" = "2",
"No surg, pt died" = "5",
"Surg rec, not done" = "6",
"Surg rec, pt refused" = "7",
"Surg rec, unk if done" = "8",
"Unknown" = "9")) %>%
mutate(SURGERY_YN = ifelse(REASON_FOR_NO_SURGERY == "0",
"Yes",
ifelse(REASON_FOR_NO_SURGERY == "9",
"Ukn",
"No"))) %>%
mutate(SURG_TF = case_when(SURGERY_YN == "Yes" ~ TRUE,
SURGERY_YN == "No" ~ FALSE,
TRUE ~ NA)) %>%
mutate(REASON_FOR_NO_RADIATION_F = fct_recode(REASON_FOR_NO_RADIATION,
"Rad performed" = "0",
"Rad not recommended" = "1",
"No Rad due to pt factors" = "2",
"No Rad, pt died" = "5",
"Rad rec, not done" = "6",
"Rad rec, pt refused" = "7",
"Rad rec, unk if done" = "8",
"Unknown" = "9")) %>%
mutate(RADIATION_YN = ifelse(REASON_FOR_NO_RADIATION == "0",
"Yes",
ifelse(REASON_FOR_NO_RADIATION == "9",
NA,
"No"))) %>%
mutate(SURGRAD_SEQ_F = fct_recode(RX_SUMM_SURGRAD_SEQ,
"None or Surg or Rad" = "0",
"Rad before Surg" = "2",
"Surg before Rad" = "3",
"Rad before and after Surg" = "4",
"Intraop Rad" = "5",
"Intraop Rad plus other" = "6",
"Unknown" = "9")) %>%
mutate(SURG_RAD_SEQ = ifelse(SURGERY_YN == "Yes" & RX_SUMM_SURGRAD_SEQ == "0",
"Surg Alone",
ifelse(RADIATION_YN == "Yes" & RX_SUMM_SURGRAD_SEQ == "0",
"Rad Alone",
ifelse(SURGERY_YN == "No" & RADIATION_YN == "No" & RX_SUMM_SURGRAD_SEQ == "0",
"No Treatment",
ifelse(RX_SUMM_SURGRAD_SEQ == "2",
"Rad then Surg",
ifelse(RX_SUMM_SURGRAD_SEQ == "3",
"Surg then Rad",
ifelse(RX_SUMM_SURGRAD_SEQ == "4",
"Rad before and after Surg",
"Other"))))))) %>%
mutate(SURG_RAD_SEQ = fct_relevel(SURG_RAD_SEQ,
"Surg Alone",
"Surg then Rad",
"Rad Alone")) %>%
mutate(CHEMO_YN = fct_collapse(RX_SUMM_CHEMO,
"No" = c("00", "82", "85", "86", "87"),
"Yes" = c("01", "02", "03"),
"Ukn" = c("88", "99"))) %>%
mutate(SURG_RAD_SEQ_C = ifelse(SURGERY_YN == "Yes" & RX_SUMM_SURGRAD_SEQ == "0" & CHEMO_YN == "No",
"Surg, No rad, No Chemo",
ifelse(RADIATION_YN == "Yes" & RX_SUMM_SURGRAD_SEQ == "0" & CHEMO_YN == "No",
"Rad, No Surg, No Chemo",
ifelse(SURGERY_YN == "No" & RADIATION_YN == "No" & RX_SUMM_SURGRAD_SEQ == "0" & CHEMO_YN == "No",
"No Surg, No Rad, No Chemo",
ifelse(RX_SUMM_SURGRAD_SEQ == "2" & CHEMO_YN == "No",
"Rad then Surg, No Chemo",
ifelse(RX_SUMM_SURGRAD_SEQ == "3" & CHEMO_YN == "No",
"Surg then Rad, No Chemo",
ifelse(RX_SUMM_SURGRAD_SEQ == "4" & CHEMO_YN == "No",
"Rad before and after Surg, No Chemo",
ifelse(SURGERY_YN == "Yes" & RX_SUMM_SURGRAD_SEQ == "0" & CHEMO_YN == "Yes",
"Surg, No rad, Yes Chemo",
ifelse(RADIATION_YN == "Yes" & RX_SUMM_SURGRAD_SEQ == "0" & CHEMO_YN == "Yes",
"Rad, No Surg, Yes Chemo",
ifelse(SURGERY_YN == "No" & RADIATION_YN == "No" & RX_SUMM_SURGRAD_SEQ == "0" & CHEMO_YN == "Yes",
"No Surg, No Rad, Yes Chemo",
ifelse(RX_SUMM_SURGRAD_SEQ == "2" & CHEMO_YN == "Yes",
"Rad then Surg, Yes Chemo",
ifelse(RX_SUMM_SURGRAD_SEQ == "3" & CHEMO_YN == "Yes",
"Surg then Rad, Yes Chemo",
ifelse(RX_SUMM_SURGRAD_SEQ == "4" & CHEMO_YN == "Yes",
"Rad before and after Surg, Yes Chemo",
"Other"))))))))))))) %>%
mutate(SURG_RAD_SEQ_C = fct_infreq(SURG_RAD_SEQ_C)) %>%
mutate(T_SIZE = as.numeric(TUMOR_SIZE)) %>%
mutate(T_SIZE = ifelse(T_SIZE == 0,
"No Tumor",
ifelse(T_SIZE > 0 & T_SIZE < 10 | T_SIZE == 991,
"< 1 cm",
ifelse(T_SIZE >= 10 & T_SIZE < 20 | T_SIZE == 992,
"1-2 cm",
ifelse(T_SIZE >= 20 & T_SIZE < 30 | T_SIZE == 993,
"2-3 cm",
ifelse(T_SIZE >= 30 & T_SIZE < 40 | T_SIZE == 994,
"3-4 cm",
ifelse(T_SIZE >= 40 & T_SIZE < 50 | T_SIZE == 995,
"4-5 cm",
ifelse(T_SIZE >= 50 & T_SIZE < 60 | T_SIZE == 996,
"5-6 cm",
ifelse(T_SIZE >= 60 & T_SIZE <= 987 |
T_SIZE == 980 | T_SIZE == 989 |
T_SIZE == 997,
">6 cm",
ifelse(T_SIZE == 988 | T_SIZE == 999,
"NA_unk",
"Microscopic focus")))))))))) %>%
mutate(T_SIZE = factor(T_SIZE)) %>%
mutate(T_SIZE = fct_relevel(T_SIZE,
"No Tumor", "Microscopic focus", "< 1 cm", "1-2 cm", "2-3 cm", "3-4 cm",
"4-5 cm", "5-6 cm", ">6 cm", "NA_unk")) %>%
mutate(mets_at_dx = case_when(CS_METS_DX_LUNG == "1" ~ "Lung",
CS_METS_DX_BONE == "1" ~ "Bone",
CS_METS_DX_BRAIN == "1" ~ "Brain",
CS_METS_DX_LIVER == "1" ~ "Liver",
TRUE ~ "None/Other/Unk/NA")) %>%
mutate(MEDICAID_EXPN_CODE = fct_recode(MEDICAID_EXPN_CODE,
"Non-Expansion State" = "0",
"Jan 2014 Expansion States" = "1",
"Early Expansion States (2010-13)" = "2",
"Late Expansion States (> Jan 2014)" = "3",
"Suppressed for Ages 0 - 39" = "9")) %>%
mutate(EXPN_GROUP = case_when(MEDICAID_EXPN_CODE %in% c("Jan 2014 Expansion States") &
YEAR_OF_DIAGNOSIS %in% c("2014", "2015") ~ "Post-Expansion",
MEDICAID_EXPN_CODE %in% c("Jan 2014 Expansion States") &
YEAR_OF_DIAGNOSIS %in%
c("2004", "2005", "2006", "2007", "2008",
"2009", "2010", "2011", "2012", "2013") ~ "Pre-Expansion",
MEDICAID_EXPN_CODE %in% c("Early Expansion States (2010-13)") &
YEAR_OF_DIAGNOSIS %in% c("2010", "2011", "2012", "2013", "2014", "2015") ~ "Post-Expansion",
MEDICAID_EXPN_CODE %in% c("Early Expansion States (2010-13)") &
YEAR_OF_DIAGNOSIS %in% c("2004", "2005", "2006", "2007", "2008", "2009") ~ "Pre-Expansion",
MEDICAID_EXPN_CODE %in% c("Non-Expansion State") ~ "Pre-Expansion",
MEDICAID_EXPN_CODE %in% c("Late Expansion States (> Jan 2014)") ~ "Pre-Expansion",
MEDICAID_EXPN_CODE %in% c("Late Expansion States (> Jan 2014)") &
YEAR_OF_DIAGNOSIS %in% c("2014", "2015") ~ "Exclude",
MEDICAID_EXPN_CODE == "Suppressed for Ages 0 - 39" ~ "Exclude")) %>%
mutate(pre_2014 = YEAR_OF_DIAGNOSIS %in% c("2004", "2005", "2006", "2007", "2008",
"2009", "2010", "2011", "2012", "2013")) %>%
mutate(mets_at_dx_F = ifelse(mets_at_dx == "None/Other/Unk/NA", FALSE, TRUE)) %>%
mutate(Tx_YN = ifelse(SURG_RAD_SEQ == "No Treatment" & CHEMO_YN == "No", FALSE,
ifelse(CHEMO_YN == "Ukn", NA,
TRUE)))
Unknown levels in `f`: 9Unknown levels in `f`: 0Unknown levels in `f`: 88Unknown levels in `f`: 1Unknown levels in `f`: 88Unknown levels in `f`: 88Unknown levels in `f`: 88Unknown levels in `f`: 1Unknown levels in `f`: 88Unknown levels in `f`: 88Unknown levels in `f`: 88Unknown levels in `f`: 88Unknown levels in `f`: 4Unknown levels in `f`: 5Unknown levels in `f`: 0, 1, 2, 3, 9
fact_vars_2 <- c("FACILITY_TYPE_F", "FACILITY_LOCATION_F", "AGE_F", "SEX_F", "RACE_F",
"HISPANIC", "INSURANCE_F", "INCOME_F", "EDUCATION_F", "U_R_F",
"CDCC_TOTAL_BEST", "CLASS_OF_CASE_F", "YEAR_OF_DIAGNOSIS", "PRIMARY_SITE", "HISTOLOGY",
"BEHAVIOR", "GRADE_F", "TNM_CLIN_T", "TNM_CLIN_N", "TNM_CLIN_M",
"TNM_CLIN_STAGE_GROUP", "TNM_PATH_T", "TNM_PATH_N", "TNM_PATH_M", "TNM_PATH_STAGE_GROUP",
"MARGINS", "READM_HOSP_30_DAYS_F", "RX_SUMM_RADIATION_F", "PUF_30_DAY_MORT_CD_F",
"PUF_90_DAY_MORT_CD_F", "LYMPH_VASCULAR_INVASION_F", "RX_HOSP_SURG_APPR_2010_F", "mets_at_dx")
dat <- dat %>%
mutate_at(fact_vars_2, funs(factor(.)))
Table of variables for all cases:
p_table(data,
vars = c("FACILITY_TYPE_F", "FACILITY_LOCATION_F", "FACILITY_GEOGRAPHY", "AGE", "AGE_F", "AGE_40",
"SEX_F", "RACE_F", "HISPANIC", "INSURANCE_F",
"INCOME_F", "EDUCATION_F", "U_R_F", "CROWFLY", "CDCC_TOTAL_BEST",
"SITE_TEXT.y", "BEHAVIOR", "GRADE_F",
"DX_STAGING_PROC_DAYS", "TNM_CLIN_T", "TNM_CLIN_N", "TNM_CLIN_M",
"TNM_CLIN_STAGE_GROUP", "TNM_PATH_T", "TNM_PATH_N", "TNM_PATH_M",
"TNM_PATH_STAGE_GROUP", "DX_RX_STARTED_DAYS", "DX_SURG_STARTED_DAYS",
"DX_DEFSURG_STARTED_DAYS", "MARGINS", "MARGINS_YN", "SURG_DISCHARGE_DAYS",
"READM_HOSP_30_DAYS_F", "RX_SUMM_RADIATION_F", "PUF_30_DAY_MORT_CD_F",
"PUF_90_DAY_MORT_CD_F", "DX_LASTCONTACT_DEATH_MONTHS",
"LYMPH_VASCULAR_INVASION_F", "RX_HOSP_SURG_APPR_2010_F", "SURG_RAD_SEQ",
"SURG_RAD_SEQ_C", "SURGERY_YN", "RADIATION_YN", "CHEMO_YN", "mets_at_dx",
"MEDICAID_EXPN_CODE", "EXPN_GROUP", "SITE_TEXT"))
The data frame does not have: SITE_TEXT Dropped
| n |
|
675 |
| FACILITY_TYPE_F (%) |
Community Cancer Program |
81 ( 12.0) |
|
Comprehensive Comm Ca Program |
296 ( 43.9) |
|
Academic/Research Program |
173 ( 25.6) |
|
Integrated Network Ca Program |
90 ( 13.3) |
|
NA |
35 ( 5.2) |
| FACILITY_LOCATION_F (%) |
New England |
31 ( 4.6) |
|
Middle Atlantic |
93 ( 13.8) |
|
South Atlantic |
143 ( 21.2) |
|
East North Central |
134 ( 19.9) |
|
East South Central |
44 ( 6.5) |
|
West North Central |
59 ( 8.7) |
|
West South Central |
60 ( 8.9) |
|
Mountain |
35 ( 5.2) |
|
Pacific |
41 ( 6.1) |
|
NA |
35 ( 5.2) |
| FACILITY_GEOGRAPHY (%) |
Northeast |
124 ( 18.4) |
|
South |
203 ( 30.1) |
|
Midwest |
237 ( 35.1) |
|
West |
76 ( 11.3) |
|
NA |
35 ( 5.2) |
| AGE (mean (sd)) |
|
65.56 (15.04) |
| AGE_F (%) |
(0,54] |
161 ( 23.9) |
|
(54,64] |
149 ( 22.1) |
|
(64,74] |
149 ( 22.1) |
|
(74,100] |
216 ( 32.0) |
| AGE_40 (%) |
(0,40] |
38 ( 5.6) |
|
(40,100] |
637 ( 94.4) |
| SEX_F (%) |
Male |
19 ( 2.8) |
|
Female |
656 ( 97.2) |
| RACE_F (%) |
White |
570 ( 84.4) |
|
Black |
77 ( 11.4) |
|
Other/Unk |
16 ( 2.4) |
|
Asian |
12 ( 1.8) |
| HISPANIC (%) |
No |
587 ( 87.0) |
|
Yes |
27 ( 4.0) |
|
Unknown |
61 ( 9.0) |
| INSURANCE_F (%) |
Private |
273 ( 40.4) |
|
None |
24 ( 3.6) |
|
Medicaid |
35 ( 5.2) |
|
Medicare |
320 ( 47.4) |
|
Other Government |
8 ( 1.2) |
|
Unknown |
15 ( 2.2) |
| INCOME_F (%) |
Less than $38,000 |
130 ( 19.3) |
|
$38,000 - $47,999 |
144 ( 21.3) |
|
$48,000 - $62,999 |
178 ( 26.4) |
|
$63,000 + |
218 ( 32.3) |
|
NA |
5 ( 0.7) |
| EDUCATION_F (%) |
21% or more |
99 ( 14.7) |
|
13 - 20.9% |
164 ( 24.3) |
|
7 - 12.9% |
222 ( 32.9) |
|
Less than 7% |
186 ( 27.6) |
|
NA |
4 ( 0.6) |
| U_R_F (%) |
Metro |
557 ( 82.5) |
|
Urban |
88 ( 13.0) |
|
Rural |
12 ( 1.8) |
|
NA |
18 ( 2.7) |
| CROWFLY (mean (sd)) |
|
25.98 (113.56) |
| CDCC_TOTAL_BEST (%) |
0 |
558 ( 82.7) |
|
1 |
80 ( 11.9) |
|
2 |
23 ( 3.4) |
|
3 |
14 ( 2.1) |
| SITE_TEXT.y (%) |
C50.0 Nipple |
448 ( 66.4) |
|
C50.1 Central portion of breast |
46 ( 6.8) |
|
C50.2 Upper-inner quadrant breast |
7 ( 1.0) |
|
C50.3 Lower-inner quadrant breast |
5 ( 0.7) |
|
C50.4 Upper-outer quadrant breast |
44 ( 6.5) |
|
C50.5 Lower-outer quadrant |
8 ( 1.2) |
|
C50.6 Axillary tail of breast |
2 ( 0.3) |
|
C50.8 Overlapping lesion of breast |
33 ( 4.9) |
|
C50.9 Breast NOS |
82 ( 12.1) |
| BEHAVIOR (%) |
2 |
0 ( 0.0) |
|
3 |
675 (100.0) |
| GRADE_F (%) |
Gr I: Well Diff |
22 ( 3.3) |
|
Gr II: Mod Diff |
55 ( 8.1) |
|
Gr III: Poor Diff |
106 ( 15.7) |
|
Gr IV: Undiff/Anaplastic |
2 ( 0.3) |
|
5 |
0 ( 0.0) |
|
6 |
0 ( 0.0) |
|
7 |
0 ( 0.0) |
|
8 |
0 ( 0.0) |
|
NA/Unkown |
490 ( 72.6) |
| DX_STAGING_PROC_DAYS (mean (sd)) |
|
1.68 (10.24) |
| TNM_CLIN_T (%) |
c0 |
5 ( 0.7) |
|
c1 |
37 ( 5.5) |
|
c1A |
12 ( 1.8) |
|
c1B |
9 ( 1.3) |
|
c1C |
15 ( 2.2) |
|
c1MI |
4 ( 0.6) |
|
c2 |
21 ( 3.1) |
|
c2A |
0 ( 0.0) |
|
c2B |
0 ( 0.0) |
|
c2C |
0 ( 0.0) |
|
c3 |
18 ( 2.7) |
|
c3A |
0 ( 0.0) |
|
c3B |
0 ( 0.0) |
|
c4 |
10 ( 1.5) |
|
c4A |
0 ( 0.0) |
|
c4B |
10 ( 1.5) |
|
c4C |
0 ( 0.0) |
|
c4D |
3 ( 0.4) |
|
cX |
188 ( 27.9) |
|
N_A |
0 ( 0.0) |
|
pA |
0 ( 0.0) |
|
pIS |
307 ( 45.5) |
|
NA |
36 ( 5.3) |
| TNM_CLIN_N (%) |
c0 |
449 ( 66.5) |
|
c1 |
26 ( 3.9) |
|
c1A |
0 ( 0.0) |
|
c1B |
0 ( 0.0) |
|
c2 |
6 ( 0.9) |
|
c2A |
2 ( 0.3) |
|
c2B |
1 ( 0.1) |
|
c2C |
0 ( 0.0) |
|
c3 |
3 ( 0.4) |
|
c3A |
1 ( 0.1) |
|
c3B |
0 ( 0.0) |
|
c3C |
0 ( 0.0) |
|
cX |
162 ( 24.0) |
|
N_A |
0 ( 0.0) |
|
NA |
25 ( 3.7) |
| TNM_CLIN_M (%) |
c0 |
614 ( 91.0) |
|
c0I+ |
0 ( 0.0) |
|
c1 |
26 ( 3.9) |
|
c1A |
0 ( 0.0) |
|
c1B |
0 ( 0.0) |
|
c1C |
0 ( 0.0) |
|
N_A |
0 ( 0.0) |
|
NA |
35 ( 5.2) |
| TNM_CLIN_STAGE_GROUP (%) |
0 |
333 ( 49.3) |
|
1 |
39 ( 5.8) |
|
1A |
32 ( 4.7) |
|
1B |
1 ( 0.1) |
|
1C |
0 ( 0.0) |
|
2 |
0 ( 0.0) |
|
2A |
23 ( 3.4) |
|
2B |
13 ( 1.9) |
|
2C |
0 ( 0.0) |
|
3 |
2 ( 0.3) |
|
3A |
7 ( 1.0) |
|
3B |
12 ( 1.8) |
|
3C |
3 ( 0.4) |
|
4 |
27 ( 4.0) |
|
4A |
0 ( 0.0) |
|
4B |
0 ( 0.0) |
|
4C |
0 ( 0.0) |
|
99 |
183 ( 27.1) |
|
N_A |
0 ( 0.0) |
| TNM_PATH_T (%) |
N_A |
0 ( 0.0) |
|
p0 |
8 ( 1.2) |
|
p1 |
13 ( 1.9) |
|
p1A |
17 ( 2.5) |
|
p1B |
11 ( 1.6) |
|
p1C |
24 ( 3.6) |
|
p1MI |
7 ( 1.0) |
|
p2 |
12 ( 1.8) |
|
p2A |
0 ( 0.0) |
|
p2B |
0 ( 0.0) |
|
p3 |
2 ( 0.3) |
|
p3A |
0 ( 0.0) |
|
p3B |
0 ( 0.0) |
|
p4 |
1 ( 0.1) |
|
p4A |
0 ( 0.0) |
|
p4B |
5 ( 0.7) |
|
p4C |
0 ( 0.0) |
|
p4D |
3 ( 0.4) |
|
pA |
0 ( 0.0) |
|
pIS |
261 ( 38.7) |
|
pX |
253 ( 37.5) |
|
NA |
58 ( 8.6) |
| TNM_PATH_N (%) |
N_A |
0 ( 0.0) |
|
p0 |
233 ( 34.5) |
|
p0I- |
30 ( 4.4) |
|
p0I+ |
2 ( 0.3) |
|
p0M- |
0 ( 0.0) |
|
p0M+ |
0 ( 0.0) |
|
p1 |
7 ( 1.0) |
|
p1A |
9 ( 1.3) |
|
p1B |
0 ( 0.0) |
|
p1C |
0 ( 0.0) |
|
p1MI |
2 ( 0.3) |
|
p2 |
2 ( 0.3) |
|
p2A |
2 ( 0.3) |
|
p2B |
0 ( 0.0) |
|
p2C |
0 ( 0.0) |
|
p3 |
2 ( 0.3) |
|
p3A |
3 ( 0.4) |
|
p3B |
0 ( 0.0) |
|
p3C |
0 ( 0.0) |
|
pX |
304 ( 45.0) |
|
NA |
79 ( 11.7) |
| TNM_PATH_M (%) |
N_A |
0 ( 0.0) |
|
p1 |
8 ( 1.2) |
|
p1A |
0 ( 0.0) |
|
p1B |
0 ( 0.0) |
|
p1C |
0 ( 0.0) |
|
pX |
344 ( 51.0) |
|
NA |
323 ( 47.9) |
| TNM_PATH_STAGE_GROUP (%) |
0 |
298 ( 44.1) |
|
1 |
55 ( 8.1) |
|
1A |
26 ( 3.9) |
|
1B |
2 ( 0.3) |
|
1C |
0 ( 0.0) |
|
2 |
3 ( 0.4) |
|
2A |
21 ( 3.1) |
|
2B |
8 ( 1.2) |
|
2C |
0 ( 0.0) |
|
3 |
0 ( 0.0) |
|
3A |
4 ( 0.6) |
|
3B |
6 ( 0.9) |
|
3C |
5 ( 0.7) |
|
4 |
9 ( 1.3) |
|
4A |
0 ( 0.0) |
|
4B |
0 ( 0.0) |
|
4C |
0 ( 0.0) |
|
99 |
198 ( 29.3) |
|
N_A |
0 ( 0.0) |
|
NA |
40 ( 5.9) |
| DX_RX_STARTED_DAYS (mean (sd)) |
|
35.43 (34.86) |
| DX_SURG_STARTED_DAYS (mean (sd)) |
|
38.84 (40.14) |
| DX_DEFSURG_STARTED_DAYS (mean (sd)) |
|
46.51 (46.12) |
| MARGINS (%) |
No Residual |
511 ( 75.7) |
|
Residual, NOS |
10 ( 1.5) |
|
Microscopic Resid |
11 ( 1.6) |
|
Macroscopic Resid |
3 ( 0.4) |
|
Not evaluable |
0 ( 0.0) |
|
No surg |
122 ( 18.1) |
|
Unknown |
18 ( 2.7) |
| MARGINS_YN (%) |
No |
511 ( 75.7) |
|
Yes |
24 ( 3.6) |
|
No surg/Unk/NA |
140 ( 20.7) |
| SURG_DISCHARGE_DAYS (mean (sd)) |
|
1.00 (4.05) |
| READM_HOSP_30_DAYS_F (%) |
No_Surg_or_No_Readmit |
627 ( 92.9) |
|
Unplan_Readmit_Same |
15 ( 2.2) |
|
Plan_Readmit_Same |
18 ( 2.7) |
|
PlanUnplan_Same |
1 ( 0.1) |
|
9 |
14 ( 2.1) |
| RX_SUMM_RADIATION_F (%) |
None |
465 ( 68.9) |
|
Beam Radiation |
200 ( 29.6) |
|
Radioactive Implants |
2 ( 0.3) |
|
Radioisotopes |
0 ( 0.0) |
|
Beam + Imp or Isotopes |
0 ( 0.0) |
|
Radiation, NOS |
0 ( 0.0) |
|
Unknown |
8 ( 1.2) |
| PUF_30_DAY_MORT_CD_F (%) |
Alive_30 |
542 ( 80.3) |
|
Dead_30 |
1 ( 0.1) |
|
Unknown |
6 ( 0.9) |
|
NA |
126 ( 18.7) |
| PUF_90_DAY_MORT_CD_F (%) |
Alive_90 |
536 ( 79.4) |
|
Dead_90 |
3 ( 0.4) |
|
Unknown |
10 ( 1.5) |
|
NA |
126 ( 18.7) |
| DX_LASTCONTACT_DEATH_MONTHS (mean (sd)) |
|
59.19 (42.79) |
| LYMPH_VASCULAR_INVASION_F (%) |
Neg_LymphVasc_Inv |
162 ( 24.0) |
|
Pos_LumphVasc_Inv |
10 ( 1.5) |
|
N_A |
0 ( 0.0) |
|
Unknown |
154 ( 22.8) |
|
NA |
349 ( 51.7) |
| RX_HOSP_SURG_APPR_2010_F (%) |
No_Surg |
96 ( 14.2) |
|
Robot_Assist |
0 ( 0.0) |
|
Robot_to_Open |
0 ( 0.0) |
|
Endo_Lap |
1 ( 0.1) |
|
Endo_Lap_to_Open |
0 ( 0.0) |
|
Open_Unknown |
229 ( 33.9) |
|
Unknown |
0 ( 0.0) |
|
NA |
349 ( 51.7) |
| SURG_RAD_SEQ (%) |
Surg Alone |
363 ( 53.8) |
|
Surg then Rad |
181 ( 26.8) |
|
Rad Alone |
19 ( 2.8) |
|
No Treatment |
95 ( 14.1) |
|
Other |
15 ( 2.2) |
|
Rad before and after Surg |
0 ( 0.0) |
|
Rad then Surg |
2 ( 0.3) |
| SURG_RAD_SEQ_C (%) |
Surg, No rad, No Chemo |
321 ( 47.6) |
|
Surg then Rad, No Chemo |
141 ( 20.9) |
|
Surg then Rad, Yes Chemo |
33 ( 4.9) |
|
Surg, No rad, Yes Chemo |
25 ( 3.7) |
|
No Surg, No Rad, Yes Chemo |
9 ( 1.3) |
|
No Surg, No Rad, No Chemo |
81 ( 12.0) |
|
Other |
46 ( 6.8) |
|
Rad, No Surg, Yes Chemo |
5 ( 0.7) |
|
Rad, No Surg, No Chemo |
12 ( 1.8) |
|
Rad then Surg, Yes Chemo |
2 ( 0.3) |
|
Rad then Surg, No Chemo |
0 ( 0.0) |
|
Rad before and after Surg, Yes Chemo |
0 ( 0.0) |
|
Rad before and after Surg, No Chemo |
0 ( 0.0) |
| SURGERY_YN (%) |
No |
115 ( 17.0) |
|
Ukn |
9 ( 1.3) |
|
Yes |
551 ( 81.6) |
| RADIATION_YN (%) |
No |
466 ( 69.0) |
|
Yes |
202 ( 29.9) |
|
NA |
7 ( 1.0) |
| CHEMO_YN (%) |
No |
563 ( 83.4) |
|
Yes |
74 ( 11.0) |
|
Ukn |
38 ( 5.6) |
| mets_at_dx (%) |
Bone |
10 ( 1.5) |
|
Brain |
0 ( 0.0) |
|
Liver |
1 ( 0.1) |
|
Lung |
4 ( 0.6) |
|
None/Other/Unk/NA |
660 ( 97.8) |
| MEDICAID_EXPN_CODE (%) |
Early Expansion States (2010-13) |
77 ( 11.4) |
|
Jan 2014 Expansion States |
207 ( 30.7) |
|
Late Expansion States (> Jan 2014) |
95 ( 14.1) |
|
Non-Expansion State |
261 ( 38.7) |
|
Suppressed for Ages 0 - 39 |
35 ( 5.2) |
| EXPN_GROUP (%) |
Exclude |
35 ( 5.2) |
|
Post-Expansion |
62 ( 9.2) |
|
Pre-Expansion |
578 ( 85.6) |
preExpMedicare <- nrow(data %>% filter(EXPN_GROUP == "Pre-Expansion" & INSURANCE_F == "Medicare"))
postExpMedicare <- nrow(data %>% filter(EXPN_GROUP == "Post-Expansion" & INSURANCE_F == "Medicare"))
# p = 0.25 when comparing change in proportion of patients with Medicare before and after ACA expansion
prop.test(c(preExpMedicare, postExpMedicare),
c(nrow(data %>% filter(EXPN_GROUP == "Pre-Expansion")), nrow(data %>% filter(EXPN_GROUP == "Post-Expansion"))))
2-sample test for equality of proportions with continuity correction
data: c(preExpMedicare, postExpMedicare) out of c(nrow(data %>% filter(EXPN_GROUP == "Pre-Expansion")), nrow(data %>% c(preExpMedicare, postExpMedicare) out of filter(EXPN_GROUP == "Post-Expansion")))
X-squared = 0.18217, df = 1, p-value = 0.6695
alternative hypothesis: two.sided
95 percent confidence interval:
-0.1770938 0.1021970
sample estimates:
prop 1 prop 2
0.4948097 0.5322581
preExpNoInsurance <- nrow(data %>% filter(EXPN_GROUP == "Pre-Expansion") %>%
filter(INSURANCE_F == "None"))
postExpNoInsurance <- nrow(data %>% filter(EXPN_GROUP == "Post-Expansion") %>%
filter(INSURANCE_F == "None"))
# Significant decrease in the overall proportion of patients without insurance after ACA expansion
prop.test(c(preExpNoInsurance, postExpNoInsurance),
c(nrow(data %>% filter(EXPN_GROUP == "Pre-Expansion")), nrow(data %>% filter(EXPN_GROUP == "Post-Expansion"))))
Chi-squared approximation may be incorrect
2-sample test for equality of proportions with continuity correction
data: c(preExpNoInsurance, postExpNoInsurance) out of c(nrow(data %>% filter(EXPN_GROUP == "Pre-Expansion")), nrow(data %>% c(preExpNoInsurance, postExpNoInsurance) out of filter(EXPN_GROUP == "Post-Expansion")))
X-squared = 1.0225e-33, df = 1, p-value = 1
alternative hypothesis: two.sided
95 percent confidence interval:
-0.04843555 0.04620315
sample estimates:
prop 1 prop 2
0.03114187 0.03225806
data <- data %>% mutate(Insured = INSURANCE_F != "Unknown")
Kaplan Meier Analysis
All
uni_var(test_var = "All", data_imp = data)
_________________________________________________
## All
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ All, data = data)
n events median 0.95LCL 0.95UCL
675 180 138 133 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ All, data = data)
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 564 46 0.929 0.0102 0.909 0.949
24 497 23 0.889 0.0127 0.864 0.914
36 427 25 0.842 0.0151 0.813 0.872
48 359 19 0.802 0.0169 0.770 0.836
60 310 13 0.772 0.0183 0.737 0.808
120 79 46 0.596 0.0282 0.543 0.653
## Univariable Cox Proportional Hazard Model for: All
[1] "Only one level, no Cox model performed"
## Unadjusted Kaplan Meier Overall Survival Curve for: All



Facility Type
uni_var(test_var = "FACILITY_TYPE_F", data_imp = data)
_________________________________________________
## FACILITY_TYPE_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ FACILITY_TYPE_F, data = data)
35 observations deleted due to missingness
n events median 0.95LCL 0.95UCL
FACILITY_TYPE_F=Community Cancer Program 81 26 138 108 NA
FACILITY_TYPE_F=Comprehensive Comm Ca Program 296 83 134 108 NA
FACILITY_TYPE_F=Academic/Research Program 173 44 NA 137 NA
FACILITY_TYPE_F=Integrated Network Ca Program 90 26 133 128 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ FACILITY_TYPE_F, data = data)
35 observations deleted due to missingness
FACILITY_TYPE_F=Community Cancer Program
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 66 7 0.909 0.0328 0.847 0.976
24 60 4 0.853 0.0411 0.776 0.937
36 51 2 0.822 0.0449 0.739 0.915
48 45 6 0.726 0.0543 0.627 0.840
60 39 1 0.708 0.0558 0.607 0.826
120 11 5 0.573 0.0722 0.448 0.734
FACILITY_TYPE_F=Comprehensive Comm Ca Program
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 244 23 0.918 0.0164 0.886 0.951
24 210 9 0.882 0.0196 0.844 0.921
36 172 13 0.824 0.0240 0.779 0.873
48 141 6 0.794 0.0262 0.744 0.847
60 121 6 0.758 0.0289 0.703 0.816
120 30 23 0.540 0.0469 0.456 0.640
FACILITY_TYPE_F=Academic/Research Program
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 146 9 0.946 0.0175 0.912 0.981
24 128 7 0.899 0.0241 0.853 0.947
36 118 5 0.862 0.0281 0.809 0.919
48 99 5 0.824 0.0317 0.764 0.888
60 87 3 0.798 0.0340 0.734 0.868
120 24 14 0.605 0.0533 0.509 0.720
FACILITY_TYPE_F=Integrated Network Ca Program
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 76 7 0.919 0.0294 0.863 0.978
24 70 3 0.882 0.0352 0.815 0.953
36 59 4 0.828 0.0420 0.750 0.915
48 51 2 0.799 0.0454 0.714 0.893
60 43 3 0.749 0.0509 0.656 0.856
120 10 4 0.648 0.0653 0.532 0.790
## Univariable Cox Proportional Hazard Model for: FACILITY_TYPE_F
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ FACILITY_TYPE_F, data = data)
n= 640, number of events= 179
(35 observations deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
FACILITY_TYPE_FComprehensive Comm Ca Program 0.001391 1.001392 0.225451 0.006 0.995
FACILITY_TYPE_FAcademic/Research Program -0.223626 0.799614 0.247849 -0.902 0.367
FACILITY_TYPE_FIntegrated Network Ca Program -0.085972 0.917620 0.277593 -0.310 0.757
exp(coef) exp(-coef) lower .95 upper .95
FACILITY_TYPE_FComprehensive Comm Ca Program 1.0014 0.9986 0.6437 1.558
FACILITY_TYPE_FAcademic/Research Program 0.7996 1.2506 0.4919 1.300
FACILITY_TYPE_FIntegrated Network Ca Program 0.9176 1.0898 0.5326 1.581
Concordance= 0.525 (se = 0.022 )
Rsquare= 0.003 (max possible= 0.961 )
Likelihood ratio test= 1.63 on 3 df, p=0.6515
Wald test = 1.59 on 3 df, p=0.6614
Score (logrank) test = 1.6 on 3 df, p=0.66
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: FACILITY_TYPE_F



Facility Location
uni_var(test_var = "FACILITY_LOCATION_F", data_imp = data)
_________________________________________________
## FACILITY_LOCATION_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ FACILITY_LOCATION_F, data = data)
35 observations deleted due to missingness
n events median 0.95LCL 0.95UCL
FACILITY_LOCATION_F=New England 31 7 NA 88.7 NA
FACILITY_LOCATION_F=Middle Atlantic 93 23 138 108.0 NA
FACILITY_LOCATION_F=South Atlantic 143 36 137 133.0 NA
FACILITY_LOCATION_F=East North Central 134 37 137 127.7 NA
FACILITY_LOCATION_F=East South Central 44 18 110 73.2 NA
FACILITY_LOCATION_F=West North Central 59 22 102 83.6 NA
FACILITY_LOCATION_F=West South Central 60 21 115 67.6 NA
FACILITY_LOCATION_F=Mountain 35 6 NA NA NA
FACILITY_LOCATION_F=Pacific 41 9 NA 94.5 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ FACILITY_LOCATION_F, data = data)
35 observations deleted due to missingness
FACILITY_LOCATION_F=New England
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 23 3 0.895 0.0575 0.790 1.00
24 21 0 0.895 0.0575 0.790 1.00
36 16 1 0.843 0.0744 0.709 1.00
48 13 2 0.737 0.0954 0.572 0.95
60 12 0 0.737 0.0954 0.572 0.95
120 5 1 0.664 0.1107 0.479 0.92
FACILITY_LOCATION_F=Middle Atlantic
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 77 6 0.933 0.0266 0.882 0.986
24 67 3 0.895 0.0331 0.833 0.963
36 62 0 0.895 0.0331 0.833 0.963
48 51 5 0.820 0.0442 0.738 0.912
60 46 1 0.804 0.0464 0.718 0.900
120 9 7 0.597 0.0794 0.460 0.775
FACILITY_LOCATION_F=South Atlantic
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 123 5 0.963 0.0160 0.933 0.995
24 104 7 0.906 0.0260 0.856 0.958
36 87 4 0.869 0.0308 0.810 0.931
48 75 4 0.827 0.0358 0.759 0.900
60 64 4 0.781 0.0406 0.705 0.864
120 19 8 0.624 0.0609 0.515 0.755
FACILITY_LOCATION_F=East North Central
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 114 8 0.938 0.0212 0.897 0.981
24 103 5 0.896 0.0274 0.844 0.951
36 93 5 0.851 0.0325 0.790 0.917
48 76 6 0.792 0.0382 0.721 0.871
60 64 3 0.760 0.0410 0.683 0.844
120 17 7 0.646 0.0538 0.549 0.761
FACILITY_LOCATION_F=East South Central
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 35 7 0.834 0.0572 0.729 0.954
24 34 1 0.810 0.0604 0.700 0.938
36 30 4 0.715 0.0696 0.591 0.865
48 29 0 0.715 0.0696 0.591 0.865
60 25 0 0.715 0.0696 0.591 0.865
120 2 6 0.452 0.1102 0.280 0.729
FACILITY_LOCATION_F=West North Central
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 52 4 0.930 0.0339 0.866 0.999
24 44 5 0.838 0.0496 0.746 0.941
36 39 3 0.779 0.0566 0.675 0.898
48 33 2 0.739 0.0604 0.629 0.867
60 28 2 0.690 0.0654 0.573 0.831
120 5 6 0.430 0.0973 0.276 0.670
FACILITY_LOCATION_F=West South Central
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 46 7 0.876 0.0439 0.794 0.966
24 39 1 0.857 0.0469 0.770 0.954
36 32 3 0.791 0.0567 0.687 0.910
48 28 0 0.791 0.0567 0.687 0.910
60 24 2 0.731 0.0665 0.612 0.874
120 5 8 0.396 0.1016 0.239 0.655
FACILITY_LOCATION_F=Mountain
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 28 3 0.911 0.0492 0.819 1.000
24 26 0 0.911 0.0492 0.819 1.000
36 22 2 0.838 0.0670 0.716 0.980
48 16 0 0.838 0.0670 0.716 0.980
60 15 0 0.838 0.0670 0.716 0.980
120 8 1 0.768 0.0908 0.609 0.968
FACILITY_LOCATION_F=Pacific
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 34 3 0.923 0.0429 0.842 1.000
24 30 1 0.893 0.0508 0.799 0.998
36 19 2 0.823 0.0670 0.701 0.965
48 15 0 0.823 0.0670 0.701 0.965
60 12 1 0.759 0.0867 0.607 0.950
120 5 2 0.621 0.1133 0.435 0.888
## Univariable Cox Proportional Hazard Model for: FACILITY_LOCATION_F
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ FACILITY_LOCATION_F, data = data)
n= 640, number of events= 179
(35 observations deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
FACILITY_LOCATION_FMiddle Atlantic 0.07418 1.07700 0.43257 0.171 0.864
FACILITY_LOCATION_FSouth Atlantic 0.09900 1.10407 0.41366 0.239 0.811
FACILITY_LOCATION_FEast North Central 0.19621 1.21678 0.41332 0.475 0.635
FACILITY_LOCATION_FEast South Central 0.55115 1.73525 0.44683 1.233 0.217
FACILITY_LOCATION_FWest North Central 0.52098 1.68368 0.43483 1.198 0.231
FACILITY_LOCATION_FWest South Central 0.56765 1.76411 0.43685 1.299 0.194
FACILITY_LOCATION_FMountain -0.32226 0.72451 0.55642 -0.579 0.562
FACILITY_LOCATION_FPacific 0.11805 1.12530 0.50497 0.234 0.815
exp(coef) exp(-coef) lower .95 upper .95
FACILITY_LOCATION_FMiddle Atlantic 1.0770 0.9285 0.4613 2.514
FACILITY_LOCATION_FSouth Atlantic 1.1041 0.9057 0.4908 2.484
FACILITY_LOCATION_FEast North Central 1.2168 0.8218 0.5412 2.735
FACILITY_LOCATION_FEast South Central 1.7352 0.5763 0.7228 4.166
FACILITY_LOCATION_FWest North Central 1.6837 0.5939 0.7180 3.948
FACILITY_LOCATION_FWest South Central 1.7641 0.5669 0.7493 4.153
FACILITY_LOCATION_FMountain 0.7245 1.3802 0.2435 2.156
FACILITY_LOCATION_FPacific 1.1253 0.8887 0.4182 3.028
Concordance= 0.557 (se = 0.023 )
Rsquare= 0.015 (max possible= 0.961 )
Likelihood ratio test= 9.48 on 8 df, p=0.3035
Wald test = 9.52 on 8 df, p=0.3002
Score (logrank) test = 9.75 on 8 df, p=0.283
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: FACILITY_LOCATION_F



Facility Geography
uni_var(test_var = "FACILITY_GEOGRAPHY", data_imp = data)
_________________________________________________
## FACILITY_GEOGRAPHY
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ FACILITY_GEOGRAPHY, data = data)
35 observations deleted due to missingness
n events median 0.95LCL 0.95UCL
FACILITY_GEOGRAPHY=Northeast 124 30 NA 138 NA
FACILITY_GEOGRAPHY=South 203 57 134 115 NA
FACILITY_GEOGRAPHY=Midwest 237 77 133 108 NA
FACILITY_GEOGRAPHY=West 76 15 NA NA NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ FACILITY_GEOGRAPHY, data = data)
35 observations deleted due to missingness
FACILITY_GEOGRAPHY=Northeast
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 100 9 0.924 0.0244 0.877 0.973
24 88 3 0.895 0.0287 0.841 0.953
36 78 1 0.884 0.0305 0.826 0.946
48 64 7 0.802 0.0404 0.727 0.886
60 58 1 0.789 0.0417 0.712 0.876
120 14 8 0.621 0.0640 0.508 0.760
FACILITY_GEOGRAPHY=South
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 169 12 0.938 0.0174 0.904 0.972
24 143 8 0.891 0.0232 0.847 0.937
36 119 7 0.846 0.0276 0.793 0.901
48 103 4 0.815 0.0305 0.758 0.877
60 88 6 0.765 0.0348 0.700 0.837
120 24 16 0.553 0.0548 0.455 0.671
FACILITY_GEOGRAPHY=Midwest
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 201 19 0.916 0.0184 0.881 0.953
24 181 11 0.865 0.0230 0.821 0.911
36 162 12 0.806 0.0269 0.755 0.861
48 138 8 0.765 0.0293 0.709 0.824
60 117 5 0.735 0.0311 0.676 0.798
120 24 19 0.548 0.0466 0.464 0.647
FACILITY_GEOGRAPHY=West
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 62 6 0.917 0.0324 0.856 0.983
24 56 1 0.901 0.0356 0.834 0.974
36 41 4 0.831 0.0471 0.744 0.929
48 31 0 0.831 0.0471 0.744 0.929
60 27 1 0.801 0.0540 0.702 0.914
120 13 3 0.695 0.0739 0.564 0.856
## Univariable Cox Proportional Hazard Model for: FACILITY_GEOGRAPHY
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ FACILITY_GEOGRAPHY, data = data)
n= 640, number of events= 179
(35 observations deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
FACILITY_GEOGRAPHYSouth 0.1907 1.2101 0.2256 0.845 0.398
FACILITY_GEOGRAPHYMidwest 0.3003 1.3502 0.2156 1.393 0.164
FACILITY_GEOGRAPHYWest -0.1390 0.8702 0.3165 -0.439 0.661
exp(coef) exp(-coef) lower .95 upper .95
FACILITY_GEOGRAPHYSouth 1.2101 0.8264 0.7776 1.883
FACILITY_GEOGRAPHYMidwest 1.3502 0.7406 0.8849 2.060
FACILITY_GEOGRAPHYWest 0.8702 1.1491 0.4680 1.618
Concordance= 0.532 (se = 0.023 )
Rsquare= 0.006 (max possible= 0.961 )
Likelihood ratio test= 3.77 on 3 df, p=0.2874
Wald test = 3.6 on 3 df, p=0.3076
Score (logrank) test = 3.64 on 3 df, p=0.3033
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: FACILITY_GEOGRAPHY



Age Group
uni_var(test_var = "AGE_F", data_imp = data)
_________________________________________________
## AGE_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ AGE_F, data = data)
n events median 0.95LCL 0.95UCL
AGE_F=(0,54] 161 17 NA NA NA
AGE_F=(54,64] 149 28 137.0 134 NA
AGE_F=(64,74] 149 30 153.1 115 NA
AGE_F=(74,100] 216 105 73.2 60 93.4
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ AGE_F, data = data)
AGE_F=(0,54]
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 145 3 0.981 0.0109 0.960 1.000
24 129 4 0.952 0.0176 0.918 0.988
36 116 5 0.914 0.0239 0.868 0.962
48 104 1 0.905 0.0251 0.857 0.956
60 96 0 0.905 0.0251 0.857 0.956
120 29 4 0.858 0.0334 0.795 0.926
AGE_F=(54,64]
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 121 11 0.921 0.0227 0.878 0.967
24 108 3 0.898 0.0259 0.849 0.950
36 94 2 0.881 0.0282 0.827 0.938
48 75 4 0.840 0.0334 0.777 0.908
60 68 1 0.829 0.0347 0.764 0.900
120 20 4 0.737 0.0552 0.636 0.853
AGE_F=(64,74]
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 131 5 0.965 0.0152 0.936 0.996
24 116 6 0.919 0.0235 0.874 0.966
36 100 3 0.894 0.0268 0.843 0.948
48 84 3 0.866 0.0306 0.808 0.928
60 71 0 0.866 0.0306 0.808 0.928
120 17 12 0.609 0.0719 0.483 0.767
AGE_F=(74,100]
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 167 27 0.867 0.0238 0.822 0.915
24 144 10 0.813 0.0279 0.760 0.869
36 117 15 0.724 0.0329 0.662 0.792
48 96 11 0.653 0.0361 0.586 0.727
60 75 12 0.565 0.0391 0.494 0.647
120 13 26 0.301 0.0446 0.225 0.402
## Univariable Cox Proportional Hazard Model for: AGE_F
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ AGE_F, data = data)
n= 675, number of events= 180
coef exp(coef) se(coef) z Pr(>|z|)
AGE_F(54,64] 0.7831 2.1883 0.3086 2.537 0.0112 *
AGE_F(64,74] 0.8140 2.2570 0.3039 2.678 0.0074 **
AGE_F(74,100] 1.9331 6.9109 0.2636 7.334 2.24e-13 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
AGE_F(54,64] 2.188 0.4570 1.195 4.007
AGE_F(64,74] 2.257 0.4431 1.244 4.095
AGE_F(74,100] 6.911 0.1447 4.123 11.585
Concordance= 0.666 (se = 0.023 )
Rsquare= 0.126 (max possible= 0.956 )
Likelihood ratio test= 90.86 on 3 df, p=0
Wald test = 82.35 on 3 df, p=0
Score (logrank) test = 99.33 on 3 df, p=0
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: AGE_F



Age Group
uni_var(test_var = "AGE_40", data_imp = data)
_________________________________________________
## AGE_40
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ AGE_40, data = data)
n events median 0.95LCL 0.95UCL
AGE_40=(0,40] 38 1 NA NA NA
AGE_40=(40,100] 637 179 137 133 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ AGE_40, data = data)
AGE_40=(0,40]
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 35 0 1.000 0.0000 1.000 1
24 32 0 1.000 0.0000 1.000 1
36 29 1 0.967 0.0328 0.905 1
48 25 0 0.967 0.0328 0.905 1
60 22 0 0.967 0.0328 0.905 1
120 4 0 0.967 0.0328 0.905 1
AGE_40=(40,100]
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 529 46 0.924 0.0108 0.903 0.946
24 465 23 0.882 0.0134 0.856 0.909
36 398 24 0.834 0.0158 0.804 0.866
48 334 19 0.792 0.0177 0.758 0.828
60 288 13 0.760 0.0192 0.723 0.798
120 75 46 0.577 0.0289 0.523 0.637
## Univariable Cox Proportional Hazard Model for: AGE_40
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ AGE_40, data = data)
n= 675, number of events= 180
coef exp(coef) se(coef) z Pr(>|z|)
AGE_40(40,100] 2.460 11.708 1.003 2.453 0.0142 *
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
AGE_40(40,100] 11.71 0.08541 1.64 83.58
Concordance= 0.528 (se = 0.01 )
Rsquare= 0.023 (max possible= 0.956 )
Likelihood ratio test= 15.87 on 1 df, p=6.772e-05
Wald test = 6.02 on 1 df, p=0.01416
Score (logrank) test = 9.74 on 1 df, p=0.001805
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: AGE_40



Gender
uni_var(test_var = "SEX_F", data_imp = data)
_________________________________________________
## SEX_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SEX_F, data = data)
n events median 0.95LCL 0.95UCL
SEX_F=Male 19 4 NA 101 NA
SEX_F=Female 656 176 153 133 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SEX_F, data = data)
SEX_F=Male
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 16 1 0.941 0.0571 0.836 1
24 14 0 0.941 0.0571 0.836 1
36 13 1 0.874 0.0837 0.724 1
48 11 0 0.874 0.0837 0.724 1
60 10 0 0.874 0.0837 0.724 1
120 3 2 0.546 0.1938 0.273 1
SEX_F=Female
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 548 45 0.928 0.0103 0.908 0.949
24 483 23 0.887 0.0129 0.862 0.913
36 414 24 0.841 0.0153 0.812 0.872
48 348 19 0.800 0.0172 0.767 0.835
60 300 13 0.769 0.0186 0.733 0.806
120 76 44 0.598 0.0283 0.545 0.656
## Univariable Cox Proportional Hazard Model for: SEX_F
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SEX_F, data = data)
n= 675, number of events= 180
coef exp(coef) se(coef) z Pr(>|z|)
SEX_FFemale 0.2633 1.3012 0.5059 0.52 0.603
exp(coef) exp(-coef) lower .95 upper .95
SEX_FFemale 1.301 0.7685 0.4827 3.507
Concordance= 0.506 (se = 0.007 )
Rsquare= 0 (max possible= 0.956 )
Likelihood ratio test= 0.29 on 1 df, p=0.5872
Wald test = 0.27 on 1 df, p=0.6028
Score (logrank) test = 0.27 on 1 df, p=0.6018
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: SEX_F



RACE_F
uni_var(test_var = "RACE_F", data_imp = data)
_________________________________________________
## RACE_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ RACE_F, data = data)
n events median 0.95LCL 0.95UCL
RACE_F=White 570 151 138.2 133.0 NA
RACE_F=Black 77 26 93.4 78.1 NA
RACE_F=Other/Unk 16 2 NA NA NA
RACE_F=Asian 12 1 NA NA NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ RACE_F, data = data)
RACE_F=White
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 479 36 0.934 0.0107 0.913 0.955
24 424 19 0.895 0.0134 0.869 0.922
36 364 21 0.849 0.0161 0.818 0.881
48 301 18 0.804 0.0184 0.769 0.841
60 256 12 0.770 0.0201 0.732 0.810
120 70 37 0.601 0.0305 0.544 0.664
RACE_F=Black
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 62 7 0.904 0.0344 0.839 0.974
24 52 4 0.843 0.0437 0.761 0.933
36 45 4 0.776 0.0515 0.681 0.884
48 41 1 0.758 0.0534 0.660 0.870
60 38 1 0.739 0.0552 0.639 0.856
120 3 9 0.412 0.0975 0.259 0.655
RACE_F=Other/Unk
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 13 2 0.867 0.0878 0.711 1
24 13 0 0.867 0.0878 0.711 1
36 11 0 0.867 0.0878 0.711 1
48 11 0 0.867 0.0878 0.711 1
60 11 0 0.867 0.0878 0.711 1
120 5 0 0.867 0.0878 0.711 1
RACE_F=Asian
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 10 1 0.909 0.0867 0.754 1
24 8 0 0.909 0.0867 0.754 1
36 7 0 0.909 0.0867 0.754 1
48 6 0 0.909 0.0867 0.754 1
60 5 0 0.909 0.0867 0.754 1
120 1 0 0.909 0.0867 0.754 1
## Univariable Cox Proportional Hazard Model for: RACE_F
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ RACE_F, data = data)
n= 675, number of events= 180
coef exp(coef) se(coef) z Pr(>|z|)
RACE_FBlack 0.4011 1.4935 0.2132 1.881 0.0599 .
RACE_FOther/Unk -1.1059 0.3309 0.7128 -1.551 0.1208
RACE_FAsian -0.9551 0.3848 1.0036 -0.952 0.3412
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
RACE_FBlack 1.4935 0.6696 0.98336 2.268
RACE_FOther/Unk 0.3309 3.0221 0.08183 1.338
RACE_FAsian 0.3848 2.5990 0.05382 2.751
Concordance= 0.529 (se = 0.015 )
Rsquare= 0.013 (max possible= 0.956 )
Likelihood ratio test= 8.51 on 3 df, p=0.03653
Wald test = 7.2 on 3 df, p=0.06593
Score (logrank) test = 7.69 on 3 df, p=0.05295
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: RACE_F



Hispanic
uni_var(test_var = "HISPANIC", data_imp = data)
_________________________________________________
## HISPANIC
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ HISPANIC, data = data)
n events median 0.95LCL 0.95UCL
HISPANIC=No 587 156 138 133 NA
HISPANIC=Yes 27 3 NA NA NA
HISPANIC=Unknown 61 21 NA 128 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ HISPANIC, data = data)
HISPANIC=No
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 485 40 0.928 0.0110 0.907 0.950
24 427 21 0.886 0.0138 0.860 0.914
36 366 22 0.838 0.0164 0.807 0.871
48 306 16 0.800 0.0183 0.765 0.836
60 261 12 0.767 0.0198 0.729 0.806
120 64 39 0.579 0.0318 0.520 0.644
HISPANIC=Yes
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 24 1 0.962 0.0377 0.890 1
24 20 0 0.962 0.0377 0.890 1
36 15 1 0.913 0.0590 0.805 1
48 10 1 0.830 0.0956 0.663 1
60 8 0 0.830 0.0956 0.663 1
120 1 0 0.830 0.0956 0.663 1
HISPANIC=Unknown
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 55 5 0.918 0.0352 0.851 0.989
24 50 2 0.883 0.0415 0.806 0.969
36 46 2 0.847 0.0471 0.759 0.944
48 43 2 0.810 0.0517 0.715 0.918
60 41 1 0.790 0.0541 0.691 0.904
120 14 7 0.643 0.0668 0.525 0.789
## Univariable Cox Proportional Hazard Model for: HISPANIC
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ HISPANIC, data = data)
n= 675, number of events= 180
coef exp(coef) se(coef) z Pr(>|z|)
HISPANICYes -0.68962 0.50177 0.58325 -1.182 0.237
HISPANICUnknown -0.04505 0.95595 0.23390 -0.193 0.847
exp(coef) exp(-coef) lower .95 upper .95
HISPANICYes 0.5018 1.993 0.1600 1.574
HISPANICUnknown 0.9559 1.046 0.6044 1.512
Concordance= 0.507 (se = 0.014 )
Rsquare= 0.003 (max possible= 0.956 )
Likelihood ratio test= 1.78 on 2 df, p=0.4117
Wald test = 1.42 on 2 df, p=0.4923
Score (logrank) test = 1.47 on 2 df, p=0.4789
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: HISPANIC



Insurance Status
uni_var(test_var = "INSURANCE_F", data_imp = data)
_________________________________________________
## INSURANCE_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ INSURANCE_F, data = data)
n events median 0.95LCL 0.95UCL
INSURANCE_F=Private 273 35 NA NA NA
INSURANCE_F=None 24 11 78.1 34.2 NA
INSURANCE_F=Medicaid 35 9 NA 89.8 NA
INSURANCE_F=Medicare 320 120 96.6 80.5 133
INSURANCE_F=Other Government 8 1 NA 74.3 NA
INSURANCE_F=Unknown 15 4 NA 73.2 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ INSURANCE_F, data = data)
INSURANCE_F=Private
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 234 9 0.965 0.0114 0.943 0.988
24 209 6 0.940 0.0152 0.910 0.970
36 191 3 0.926 0.0170 0.893 0.959
48 164 4 0.906 0.0193 0.869 0.944
60 154 0 0.906 0.0193 0.869 0.944
120 48 10 0.804 0.0366 0.735 0.879
INSURANCE_F=None
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 20 3 0.870 0.0702 0.742 1.000
24 18 2 0.783 0.0860 0.631 0.971
36 13 3 0.638 0.1030 0.465 0.876
48 10 1 0.580 0.1087 0.402 0.838
60 9 0 0.580 0.1087 0.402 0.838
120 1 2 0.322 0.1563 0.125 0.834
INSURANCE_F=Medicaid
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 27 3 0.903 0.0533 0.804 1.000
24 24 1 0.867 0.0622 0.753 0.998
36 18 4 0.721 0.0844 0.573 0.907
48 15 0 0.721 0.0844 0.573 0.907
60 11 0 0.721 0.0844 0.573 0.907
120 5 1 0.641 0.1065 0.462 0.887
INSURANCE_F=Medicare
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 264 29 0.905 0.0167 0.873 0.939
24 229 14 0.855 0.0206 0.815 0.896
36 190 15 0.795 0.0242 0.749 0.844
48 155 14 0.733 0.0274 0.682 0.789
60 123 13 0.667 0.0305 0.610 0.730
120 25 30 0.429 0.0419 0.354 0.520
INSURANCE_F=Other Government
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 8 0 1 0 1 1
24 7 0 1 0 1 1
36 6 0 1 0 1 1
48 6 0 1 0 1 1
60 5 0 1 0 1 1
INSURANCE_F=Unknown
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 11 2 0.867 0.0878 0.711 1
24 10 0 0.867 0.0878 0.711 1
36 9 0 0.867 0.0878 0.711 1
48 9 0 0.867 0.0878 0.711 1
60 8 0 0.867 0.0878 0.711 1
## Univariable Cox Proportional Hazard Model for: INSURANCE_F
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ INSURANCE_F, data = data)
n= 675, number of events= 180
coef exp(coef) se(coef) z Pr(>|z|)
INSURANCE_FNone 1.65037 5.20891 0.34718 4.754 2.0e-06 ***
INSURANCE_FMedicaid 0.91602 2.49931 0.37412 2.448 0.0143 *
INSURANCE_FMedicare 1.33160 3.78708 0.19299 6.900 5.2e-12 ***
INSURANCE_FOther Government 0.03798 1.03871 1.01476 0.037 0.9701
INSURANCE_FUnknown 1.09154 2.97886 0.52924 2.062 0.0392 *
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
INSURANCE_FNone 5.209 0.1920 2.6377 10.286
INSURANCE_FMedicaid 2.499 0.4001 1.2005 5.203
INSURANCE_FMedicare 3.787 0.2641 2.5944 5.528
INSURANCE_FOther Government 1.039 0.9627 0.1421 7.590
INSURANCE_FUnknown 2.979 0.3357 1.0557 8.405
Concordance= 0.642 (se = 0.021 )
Rsquare= 0.09 (max possible= 0.956 )
Likelihood ratio test= 63.7 on 5 df, p=2.086e-12
Wald test = 52.65 on 5 df, p=3.959e-10
Score (logrank) test = 60.62 on 5 df, p=9.044e-12
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: INSURANCE_F



Overall Survival pre/post-ACA expansion
uni_var(test_var = "EXPN_GROUP", data_imp = no_Excludes)
_________________________________________________
## EXPN_GROUP
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ EXPN_GROUP, data = no_Excludes)
n events median 0.95LCL 0.95UCL
EXPN_GROUP=Post-Expansion 63 10 NA 54.2 NA
EXPN_GROUP=Pre-Expansion 601 172 138 133.0 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ EXPN_GROUP, data = no_Excludes)
EXPN_GROUP=Post-Expansion
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 48 6 0.898 0.0396 0.823 0.979
24 39 2 0.858 0.0468 0.771 0.955
36 21 0 0.858 0.0468 0.771 0.955
48 10 1 0.780 0.0857 0.629 0.968
60 6 1 0.683 0.1181 0.486 0.958
EXPN_GROUP=Pre-Expansion
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 505 41 0.929 0.0108 0.908 0.950
24 446 22 0.886 0.0135 0.860 0.913
36 396 24 0.837 0.0161 0.806 0.869
48 342 18 0.798 0.0178 0.764 0.833
60 299 12 0.768 0.0191 0.732 0.807
120 81 47 0.588 0.0284 0.535 0.646
## Univariable Cox Proportional Hazard Model for: EXPN_GROUP
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ EXPN_GROUP, data = no_Excludes)
n= 664, number of events= 182
coef exp(coef) se(coef) z Pr(>|z|)
EXPN_GROUPPre-Expansion -0.08197 0.92130 0.33000 -0.248 0.804
exp(coef) exp(-coef) lower .95 upper .95
EXPN_GROUPPre-Expansion 0.9213 1.085 0.4825 1.759
Concordance= 0.504 (se = 0.011 )
Rsquare= 0 (max possible= 0.959 )
Likelihood ratio test= 0.06 on 1 df, p=0.806
Wald test = 0.06 on 1 df, p=0.8038
Score (logrank) test = 0.06 on 1 df, p=0.8038
## Unadjusted Kaplan Meier Overall Survival Curve for: EXPN_GROUP



Education
uni_var(test_var = "EDUCATION_F", data_imp = data)
_________________________________________________
## EDUCATION_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ EDUCATION_F, data = data)
4 observations deleted due to missingness
n events median 0.95LCL 0.95UCL
EDUCATION_F=21% or more 99 32 107 73.2 NA
EDUCATION_F=13 - 20.9% 164 51 116 98.3 NA
EDUCATION_F=7 - 12.9% 222 57 NA 132.9 NA
EDUCATION_F=Less than 7% 186 40 153 136.8 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ EDUCATION_F, data = data)
4 observations deleted due to missingness
EDUCATION_F=21% or more
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 79 9 0.905 0.0302 0.848 0.966
24 69 3 0.869 0.0355 0.802 0.941
36 53 8 0.763 0.0469 0.676 0.861
48 41 3 0.713 0.0520 0.618 0.823
60 35 2 0.674 0.0559 0.573 0.793
120 5 7 0.455 0.0839 0.317 0.653
EDUCATION_F=13 - 20.9%
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 134 13 0.916 0.0224 0.873 0.961
24 113 9 0.852 0.0293 0.796 0.911
36 100 4 0.820 0.0322 0.760 0.886
48 80 6 0.769 0.0364 0.701 0.843
60 66 3 0.739 0.0389 0.666 0.819
120 13 15 0.482 0.0623 0.374 0.620
EDUCATION_F=7 - 12.9%
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 191 15 0.930 0.0175 0.896 0.965
24 175 6 0.900 0.0208 0.860 0.942
36 150 8 0.856 0.0249 0.809 0.906
48 129 6 0.821 0.0277 0.769 0.877
60 113 5 0.787 0.0304 0.730 0.849
120 28 15 0.631 0.0457 0.547 0.727
EDUCATION_F=Less than 7%
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 157 9 0.949 0.0164 0.918 0.982
24 138 5 0.917 0.0212 0.877 0.960
36 123 5 0.883 0.0254 0.834 0.934
48 108 4 0.853 0.0287 0.798 0.911
60 95 3 0.828 0.0311 0.770 0.892
120 33 9 0.716 0.0456 0.632 0.811
## Univariable Cox Proportional Hazard Model for: EDUCATION_F
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ EDUCATION_F, data = data)
n= 671, number of events= 180
(4 observations deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
EDUCATION_F13 - 20.9% -0.1679 0.8454 0.2259 -0.743 0.45730
EDUCATION_F7 - 12.9% -0.4740 0.6225 0.2215 -2.140 0.03239 *
EDUCATION_FLess than 7% -0.7328 0.4806 0.2389 -3.068 0.00216 **
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
EDUCATION_F13 - 20.9% 0.8454 1.183 0.5430 1.3163
EDUCATION_F7 - 12.9% 0.6225 1.606 0.4033 0.9610
EDUCATION_FLess than 7% 0.4806 2.081 0.3009 0.7675
Concordance= 0.572 (se = 0.023 )
Rsquare= 0.018 (max possible= 0.956 )
Likelihood ratio test= 12.16 on 3 df, p=0.006867
Wald test = 12.15 on 3 df, p=0.006897
Score (logrank) test = 12.46 on 3 df, p=0.005956
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: EDUCATION_F



Urban/Rural
uni_var(test_var = "U_R_F", data_imp = data)
_________________________________________________
## U_R_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ U_R_F, data = data)
18 observations deleted due to missingness
n events median 0.95LCL 0.95UCL
U_R_F=Metro 557 151 137 133 NA
U_R_F=Urban 88 24 NA 110 NA
U_R_F=Rural 12 3 NA 47 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ U_R_F, data = data)
18 observations deleted due to missingness
U_R_F=Metro
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 462 42 0.921 0.0117 0.899 0.944
24 407 19 0.882 0.0143 0.854 0.910
36 350 19 0.839 0.0167 0.807 0.872
48 300 12 0.808 0.0182 0.773 0.845
60 262 12 0.775 0.0199 0.737 0.815
120 63 39 0.595 0.0310 0.538 0.659
U_R_F=Urban
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 78 3 0.964 0.0203 0.925 1.000
24 71 3 0.926 0.0291 0.871 0.985
36 61 5 0.858 0.0398 0.783 0.940
48 45 6 0.768 0.0499 0.676 0.872
60 37 1 0.748 0.0523 0.652 0.858
120 13 6 0.593 0.0716 0.468 0.751
U_R_F=Rural
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 9 1 0.900 0.0949 0.732 1
24 8 0 0.900 0.0949 0.732 1
36 6 1 0.771 0.1442 0.535 1
48 4 1 0.617 0.1798 0.349 1
60 4 0 0.617 0.1798 0.349 1
120 1 0 0.617 0.1798 0.349 1
## Univariable Cox Proportional Hazard Model for: U_R_F
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ U_R_F, data = data)
n= 657, number of events= 178
(18 observations deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
U_R_FUrban -0.06257 0.93934 0.21994 -0.284 0.776
U_R_FRural 0.14133 1.15181 0.58359 0.242 0.809
exp(coef) exp(-coef) lower .95 upper .95
U_R_FUrban 0.9393 1.0646 0.6104 1.446
U_R_FRural 1.1518 0.8682 0.3670 3.615
Concordance= 0.505 (se = 0.015 )
Rsquare= 0 (max possible= 0.957 )
Likelihood ratio test= 0.15 on 2 df, p=0.9298
Wald test = 0.15 on 2 df, p=0.9291
Score (logrank) test = 0.15 on 2 df, p=0.929
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: U_R_F



Year
uni_var(test_var = "YEAR_OF_DIAGNOSIS", data_imp = data)
_________________________________________________
## YEAR_OF_DIAGNOSIS
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ YEAR_OF_DIAGNOSIS, data = data)
n events median 0.95LCL 0.95UCL
YEAR_OF_DIAGNOSIS=2004 45 16 153 134.1 NA
YEAR_OF_DIAGNOSIS=2005 63 20 NA 137.0 NA
YEAR_OF_DIAGNOSIS=2006 75 33 133 95.3 NA
YEAR_OF_DIAGNOSIS=2007 62 27 115 101.2 NA
YEAR_OF_DIAGNOSIS=2008 42 13 NA NA NA
YEAR_OF_DIAGNOSIS=2009 62 14 NA NA NA
YEAR_OF_DIAGNOSIS=2010 53 14 NA NA NA
YEAR_OF_DIAGNOSIS=2011 64 15 NA 73.8 NA
YEAR_OF_DIAGNOSIS=2012 47 8 NA 66.2 NA
YEAR_OF_DIAGNOSIS=2013 60 11 NA NA NA
YEAR_OF_DIAGNOSIS=2014 48 4 NA NA NA
YEAR_OF_DIAGNOSIS=2015 54 5 NA 28.4 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ YEAR_OF_DIAGNOSIS, data = data)
YEAR_OF_DIAGNOSIS=2004
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 36 6 0.862 0.0523 0.766 0.971
24 31 2 0.811 0.0606 0.700 0.939
36 28 3 0.732 0.0696 0.608 0.882
48 28 0 0.732 0.0696 0.608 0.882
60 26 1 0.706 0.0719 0.578 0.862
120 16 2 0.650 0.0764 0.516 0.818
YEAR_OF_DIAGNOSIS=2005
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 58 5 0.921 0.0341 0.856 0.990
24 49 3 0.870 0.0430 0.790 0.958
36 45 2 0.833 0.0484 0.744 0.934
48 43 0 0.833 0.0484 0.744 0.934
60 43 0 0.833 0.0484 0.744 0.934
120 28 6 0.702 0.0642 0.586 0.840
YEAR_OF_DIAGNOSIS=2006
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 67 4 0.946 0.0262 0.896 0.999
24 60 6 0.861 0.0409 0.784 0.945
36 57 2 0.832 0.0443 0.749 0.924
48 53 3 0.788 0.0487 0.698 0.889
60 52 0 0.788 0.0487 0.698 0.889
120 26 16 0.524 0.0630 0.414 0.663
YEAR_OF_DIAGNOSIS=2007
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 56 6 0.903 0.0375 0.833 0.980
24 54 1 0.887 0.0402 0.812 0.969
36 48 6 0.789 0.0521 0.693 0.898
48 43 2 0.756 0.0549 0.655 0.871
60 40 2 0.720 0.0579 0.615 0.843
120 9 10 0.496 0.0734 0.371 0.663
YEAR_OF_DIAGNOSIS=2008
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 37 4 0.902 0.0463 0.816 0.998
24 36 1 0.878 0.0511 0.783 0.984
36 34 0 0.878 0.0511 0.783 0.984
48 31 3 0.801 0.0632 0.686 0.935
60 30 1 0.775 0.0662 0.655 0.916
YEAR_OF_DIAGNOSIS=2009
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 54 3 0.950 0.0281 0.896 1.000
24 51 2 0.914 0.0368 0.845 0.989
36 47 0 0.914 0.0368 0.845 0.989
48 40 4 0.834 0.0509 0.740 0.940
60 36 1 0.812 0.0541 0.713 0.925
YEAR_OF_DIAGNOSIS=2010
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 41 3 0.941 0.0330 0.879 1.000
24 40 1 0.918 0.0394 0.844 0.999
36 37 3 0.849 0.0528 0.752 0.959
48 34 3 0.780 0.0617 0.668 0.911
60 31 2 0.735 0.0661 0.616 0.876
YEAR_OF_DIAGNOSIS=2011
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 59 2 0.968 0.0225 0.925 1.000
24 56 2 0.935 0.0316 0.875 0.999
36 50 4 0.867 0.0438 0.785 0.957
48 45 2 0.830 0.0490 0.740 0.932
60 39 4 0.753 0.0579 0.647 0.875
YEAR_OF_DIAGNOSIS=2012
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 41 2 0.953 0.0321 0.893 1.000
24 39 0 0.953 0.0321 0.893 1.000
36 34 3 0.879 0.0506 0.786 0.985
48 30 0 0.879 0.0506 0.786 0.985
60 13 2 0.821 0.0619 0.708 0.952
YEAR_OF_DIAGNOSIS=2013
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 45 5 0.907 0.0398 0.832 0.988
24 37 3 0.841 0.0521 0.744 0.949
36 34 1 0.817 0.0556 0.715 0.934
48 12 2 0.749 0.0704 0.622 0.900
YEAR_OF_DIAGNOSIS=2014
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 32 3 0.931 0.0385 0.859 1
24 28 1 0.899 0.0487 0.808 1
36 13 0 0.899 0.0487 0.808 1
YEAR_OF_DIAGNOSIS=2015
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 38 3 0.937 0.0354 0.870 1
24 16 1 0.907 0.0448 0.824 1
## Univariable Cox Proportional Hazard Model for: YEAR_OF_DIAGNOSIS
X matrix deemed to be singular; variable 12
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ YEAR_OF_DIAGNOSIS, data = data)
n= 675, number of events= 180
coef exp(coef) se(coef) z Pr(>|z|)
YEAR_OF_DIAGNOSIS2005 -0.15599 0.85557 0.34183 -0.456 0.648
YEAR_OF_DIAGNOSIS2006 0.33535 1.39843 0.31703 1.058 0.290
YEAR_OF_DIAGNOSIS2007 0.36223 1.43653 0.33044 1.096 0.273
YEAR_OF_DIAGNOSIS2008 0.01742 1.01758 0.38687 0.045 0.964
YEAR_OF_DIAGNOSIS2009 -0.07927 0.92379 0.38114 -0.208 0.835
YEAR_OF_DIAGNOSIS2010 0.18053 1.19786 0.38188 0.473 0.636
YEAR_OF_DIAGNOSIS2011 0.11601 1.12301 0.37783 0.307 0.759
YEAR_OF_DIAGNOSIS2012 -0.06744 0.93479 0.44973 -0.150 0.881
YEAR_OF_DIAGNOSIS2013 0.32908 1.38968 0.41173 0.799 0.424
YEAR_OF_DIAGNOSIS2014 -0.22881 0.79548 0.57472 -0.398 0.691
YEAR_OF_DIAGNOSIS2015 0.08046 1.08379 0.53305 0.151 0.880
YEAR_OF_DIAGNOSIS2016 NA NA 0.00000 NA NA
exp(coef) exp(-coef) lower .95 upper .95
YEAR_OF_DIAGNOSIS2005 0.8556 1.1688 0.4378 1.672
YEAR_OF_DIAGNOSIS2006 1.3984 0.7151 0.7512 2.603
YEAR_OF_DIAGNOSIS2007 1.4365 0.6961 0.7517 2.745
YEAR_OF_DIAGNOSIS2008 1.0176 0.9827 0.4767 2.172
YEAR_OF_DIAGNOSIS2009 0.9238 1.0825 0.4377 1.950
YEAR_OF_DIAGNOSIS2010 1.1979 0.8348 0.5667 2.532
YEAR_OF_DIAGNOSIS2011 1.1230 0.8905 0.5355 2.355
YEAR_OF_DIAGNOSIS2012 0.9348 1.0698 0.3872 2.257
YEAR_OF_DIAGNOSIS2013 1.3897 0.7196 0.6201 3.114
YEAR_OF_DIAGNOSIS2014 0.7955 1.2571 0.2579 2.454
YEAR_OF_DIAGNOSIS2015 1.0838 0.9227 0.3812 3.081
YEAR_OF_DIAGNOSIS2016 NA NA NA NA
Concordance= 0.542 (se = 0.023 )
Rsquare= 0.01 (max possible= 0.956 )
Likelihood ratio test= 6.71 on 11 df, p=0.8218
Wald test = 6.66 on 11 df, p=0.8259
Score (logrank) test = 6.75 on 11 df, p=0.8187
Removed 2 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: YEAR_OF_DIAGNOSIS
This manual palette can handle a maximum of 10 values. You have supplied 12.



Primary Site
uni_var(test_var = "SITE_TEXT.y", data_imp = data)
_________________________________________________
## SITE_TEXT.y
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SITE_TEXT.y, data = data)
n events median 0.95LCL 0.95UCL
SITE_TEXT.y=C50.0 Nipple 448 104 153.1 133.0 NA
SITE_TEXT.y=C50.1 Central portion of breast 46 10 NA NA NA
SITE_TEXT.y=C50.2 Upper-inner quadrant breast 7 1 NA 77.3 NA
SITE_TEXT.y=C50.3 Lower-inner quadrant breast 5 3 18.8 18.8 NA
SITE_TEXT.y=C50.4 Upper-outer quadrant breast 44 18 136.8 35.9 NA
SITE_TEXT.y=C50.5 Lower-outer quadrant 8 3 NA 29.6 NA
SITE_TEXT.y=C50.6 Axillary tail of breast 2 0 NA NA NA
SITE_TEXT.y=C50.8 Overlapping lesion of breast 33 10 NA 93.4 NA
SITE_TEXT.y=C50.9 Breast NOS 82 31 88.7 71.8 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SITE_TEXT.y, data = data)
SITE_TEXT.y=C50.0 Nipple
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 380 19 0.955 0.0100 0.936 0.975
24 337 11 0.927 0.0129 0.902 0.952
36 288 14 0.886 0.0163 0.855 0.919
48 244 11 0.851 0.0188 0.814 0.888
60 209 11 0.810 0.0216 0.769 0.853
120 56 31 0.628 0.0347 0.564 0.700
SITE_TEXT.y=C50.1 Central portion of breast
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 38 3 0.928 0.0399 0.853 1.000
24 37 0 0.928 0.0399 0.853 1.000
36 36 0 0.928 0.0399 0.853 1.000
48 31 5 0.799 0.0636 0.684 0.934
60 25 1 0.770 0.0678 0.648 0.915
120 6 1 0.731 0.0745 0.599 0.893
SITE_TEXT.y=C50.2 Upper-inner quadrant breast
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 7 0 1.000 0.000 1.0 1
24 7 0 1.000 0.000 1.0 1
36 7 0 1.000 0.000 1.0 1
48 6 0 1.000 0.000 1.0 1
60 5 0 1.000 0.000 1.0 1
120 1 1 0.667 0.272 0.3 1
SITE_TEXT.y=C50.3 Lower-inner quadrant breast
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 4 1 0.8 0.179 0.5161 1
24 1 1 0.4 0.297 0.0935 1
36 1 0 0.4 0.297 0.0935 1
48 1 0 0.4 0.297 0.0935 1
SITE_TEXT.y=C50.4 Upper-outer quadrant breast
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 37 7 0.841 0.0551 0.739 0.956
24 34 2 0.794 0.0612 0.683 0.924
36 25 7 0.620 0.0752 0.489 0.787
48 22 0 0.620 0.0752 0.489 0.787
60 22 0 0.620 0.0752 0.489 0.787
120 7 1 0.586 0.0785 0.451 0.762
SITE_TEXT.y=C50.5 Lower-outer quadrant
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 7 0 1.000 0.000 1.000 1
24 7 0 1.000 0.000 1.000 1
36 4 3 0.571 0.187 0.301 1
48 4 0 0.571 0.187 0.301 1
60 2 0 0.571 0.187 0.301 1
120 1 0 0.571 0.187 0.301 1
SITE_TEXT.y=C50.6 Axillary tail of breast
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 2 0 1 0 1 1
24 2 0 1 0 1 1
36 2 0 1 0 1 1
48 2 0 1 0 1 1
60 2 0 1 0 1 1
SITE_TEXT.y=C50.8 Overlapping lesion of breast
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 30 3 0.909 0.0500 0.816 1.000
24 24 3 0.808 0.0707 0.681 0.959
36 20 0 0.808 0.0707 0.681 0.959
48 13 2 0.709 0.0908 0.551 0.911
60 12 0 0.709 0.0908 0.551 0.911
120 4 2 0.506 0.1373 0.297 0.861
SITE_TEXT.y=C50.9 Breast NOS
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 59 13 0.828 0.0435 0.747 0.918
24 48 6 0.741 0.0514 0.647 0.849
36 44 1 0.726 0.0527 0.629 0.837
48 36 1 0.709 0.0541 0.610 0.823
60 33 0 0.709 0.0541 0.610 0.823
120 4 10 0.338 0.1023 0.187 0.612
## Univariable Cox Proportional Hazard Model for: SITE_TEXT.y
Loglik converged before variable 6 ; beta may be infinite.
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SITE_TEXT.y, data = data)
n= 675, number of events= 180
coef exp(coef) se(coef) z Pr(>|z|)
SITE_TEXT.yC50.1 Central portion of breast -1.252e-01 8.823e-01 3.313e-01 -0.378 0.70556
SITE_TEXT.yC50.2 Upper-inner quadrant breast -6.317e-01 5.317e-01 1.005e+00 -0.629 0.52966
SITE_TEXT.yC50.3 Lower-inner quadrant breast 1.919e+00 6.817e+00 5.908e-01 3.249 0.00116 **
SITE_TEXT.yC50.4 Upper-outer quadrant breast 5.122e-01 1.669e+00 2.558e-01 2.002 0.04523 *
SITE_TEXT.yC50.5 Lower-outer quadrant 5.883e-01 1.801e+00 5.864e-01 1.003 0.31574
SITE_TEXT.yC50.6 Axillary tail of breast -1.437e+01 5.719e-07 1.585e+03 -0.009 0.99277
SITE_TEXT.yC50.8 Overlapping lesion of breast 3.773e-01 1.458e+00 3.314e-01 1.139 0.25484
SITE_TEXT.yC50.9 Breast NOS 8.129e-01 2.254e+00 2.060e-01 3.946 7.95e-05 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
SITE_TEXT.yC50.1 Central portion of breast 8.823e-01 1.133e+00 0.46091 1.689
SITE_TEXT.yC50.2 Upper-inner quadrant breast 5.317e-01 1.881e+00 0.07414 3.812
SITE_TEXT.yC50.3 Lower-inner quadrant breast 6.817e+00 1.467e-01 2.14168 21.701
SITE_TEXT.yC50.4 Upper-outer quadrant breast 1.669e+00 5.991e-01 1.01094 2.756
SITE_TEXT.yC50.5 Lower-outer quadrant 1.801e+00 5.553e-01 0.57063 5.684
SITE_TEXT.yC50.6 Axillary tail of breast 5.719e-07 1.749e+06 0.00000 Inf
SITE_TEXT.yC50.8 Overlapping lesion of breast 1.458e+00 6.857e-01 0.76172 2.792
SITE_TEXT.yC50.9 Breast NOS 2.254e+00 4.436e-01 1.50550 3.376
Concordance= 0.603 (se = 0.02 )
Rsquare= 0.037 (max possible= 0.956 )
Likelihood ratio test= 25.21 on 8 df, p=0.001434
Wald test = 28.16 on 8 df, p=0.0004456
Score (logrank) test = 32.82 on 8 df, p=6.633e-05
Transformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 1 rows containing missing values (geom_errorbar).Removed 9 rows containing missing values (geom_text).Removed 9 rows containing missing values (geom_text).Removed 9 rows containing missing values (geom_text).Removed 9 rows containing missing values (geom_text).Removed 9 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).
## Unadjusted Kaplan Meier Overall Survival Curve for: SITE_TEXT.y



Histology
#uni_var(test_var = "HISTOLOGY_F_LIM", data_imp = data)
Grade
uni_var(test_var = "GRADE_F", data_imp = data)
_________________________________________________
## GRADE_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ GRADE_F, data = data)
n events median 0.95LCL 0.95UCL
GRADE_F=Gr I: Well Diff 22 7 132.9 93.4 NA
GRADE_F=Gr II: Mod Diff 55 14 NA 116.2 NA
GRADE_F=Gr III: Poor Diff 106 39 136.8 73.2 NA
GRADE_F=Gr IV: Undiff/Anaplastic 2 1 35.9 NA NA
GRADE_F=NA/Unkown 490 119 153.1 134.1 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ GRADE_F, data = data)
GRADE_F=Gr I: Well Diff
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 21 1 0.955 0.0444 0.871 1.000
24 18 1 0.904 0.0645 0.786 1.000
36 15 1 0.854 0.0781 0.714 1.000
48 14 0 0.854 0.0781 0.714 1.000
60 9 1 0.793 0.0933 0.630 0.999
120 2 2 0.566 0.1509 0.336 0.955
GRADE_F=Gr II: Mod Diff
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 49 4 0.925 0.0361 0.857 0.998
24 44 1 0.905 0.0404 0.829 0.988
36 36 4 0.820 0.0547 0.719 0.934
48 31 0 0.820 0.0547 0.719 0.934
60 27 0 0.820 0.0547 0.719 0.934
120 5 5 0.564 0.1223 0.369 0.863
GRADE_F=Gr III: Poor Diff
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 92 10 0.903 0.0292 0.848 0.962
24 81 7 0.833 0.0370 0.763 0.909
36 71 5 0.779 0.0417 0.702 0.865
48 57 7 0.701 0.0469 0.615 0.799
60 48 3 0.663 0.0492 0.573 0.767
120 13 6 0.557 0.0574 0.455 0.681
GRADE_F=Gr IV: Undiff/Anaplastic
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 2 0 1 0 1 1
24 1 0 1 0 1 1
GRADE_F=NA/Unkown
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 400 31 0.933 0.0116 0.911 0.956
24 353 14 0.899 0.0143 0.871 0.928
36 305 14 0.862 0.0169 0.829 0.895
48 257 12 0.826 0.0191 0.789 0.864
60 226 9 0.795 0.0210 0.755 0.837
120 59 33 0.613 0.0336 0.551 0.683
## Univariable Cox Proportional Hazard Model for: GRADE_F
X matrix deemed to be singular; variable 4 5 6 7
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ GRADE_F, data = data)
n= 675, number of events= 180
coef exp(coef) se(coef) z Pr(>|z|)
GRADE_FGr II: Mod Diff -0.1592 0.8528 0.4640 -0.343 0.731
GRADE_FGr III: Poor Diff 0.2431 1.2752 0.4112 0.591 0.554
GRADE_FGr IV: Undiff/Anaplastic 1.2910 3.6363 1.0721 1.204 0.229
GRADE_F5 NA NA 0.0000 NA NA
GRADE_F6 NA NA 0.0000 NA NA
GRADE_F7 NA NA 0.0000 NA NA
GRADE_F8 NA NA 0.0000 NA NA
GRADE_FNA/Unkown -0.1821 0.8335 0.3898 -0.467 0.640
exp(coef) exp(-coef) lower .95 upper .95
GRADE_FGr II: Mod Diff 0.8528 1.1726 0.3435 2.117
GRADE_FGr III: Poor Diff 1.2752 0.7842 0.5696 2.855
GRADE_FGr IV: Undiff/Anaplastic 3.6363 0.2750 0.4447 29.735
GRADE_F5 NA NA NA NA
GRADE_F6 NA NA NA NA
GRADE_F7 NA NA NA NA
GRADE_F8 NA NA NA NA
GRADE_FNA/Unkown 0.8335 1.1998 0.3882 1.790
Concordance= 0.543 (se = 0.019 )
Rsquare= 0.009 (max possible= 0.956 )
Likelihood ratio test= 6.3 on 4 df, p=0.178
Wald test = 7.29 on 4 df, p=0.1215
Score (logrank) test = 7.7 on 4 df, p=0.1032
Removed 5 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: GRADE_F



Clinical T Stage
#uni_var(test_var = "TNM_CLIN_T", data_imp = data)
Clinical N Stage
#uni_var(test_var = "TNM_CLIN_N", data_imp = data)
Clinical M Stage
#uni_var(test_var = "TNM_CLIN_M", data_imp = data)
Clinical Stage Group
uni_var(test_var = "TNM_CLIN_STAGE_GROUP", data_imp = data)
_________________________________________________
## TNM_CLIN_STAGE_GROUP
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_CLIN_STAGE_GROUP, data = data)
n events median 0.95LCL 0.95UCL
TNM_CLIN_STAGE_GROUP=0 333 74 NA 138.22 NA
TNM_CLIN_STAGE_GROUP=1 39 5 NA 132.99 NA
TNM_CLIN_STAGE_GROUP=1A 32 3 NA NA NA
TNM_CLIN_STAGE_GROUP=1B 1 0 NA NA NA
TNM_CLIN_STAGE_GROUP=2A 23 6 NA NA NA
TNM_CLIN_STAGE_GROUP=2B 13 5 71.03 69.68 NA
TNM_CLIN_STAGE_GROUP=3 2 1 7.33 7.33 NA
TNM_CLIN_STAGE_GROUP=3A 7 3 116.17 50.99 NA
TNM_CLIN_STAGE_GROUP=3B 12 9 24.42 4.50 NA
TNM_CLIN_STAGE_GROUP=3C 3 2 42.15 4.21 NA
TNM_CLIN_STAGE_GROUP=4 27 22 14.00 8.34 26.6
TNM_CLIN_STAGE_GROUP=99 183 50 153.13 134.08 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_CLIN_STAGE_GROUP, data = data)
TNM_CLIN_STAGE_GROUP=0
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 280 10 0.968 0.0101 0.948 0.988
24 250 11 0.928 0.0151 0.899 0.958
36 218 7 0.901 0.0179 0.867 0.937
48 175 14 0.839 0.0231 0.795 0.885
60 143 6 0.808 0.0255 0.759 0.859
120 25 25 0.585 0.0464 0.501 0.683
TNM_CLIN_STAGE_GROUP=1
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 38 0 1.000 0.0000 1.000 1
24 34 0 1.000 0.0000 1.000 1
36 32 0 1.000 0.0000 1.000 1
48 26 0 1.000 0.0000 1.000 1
60 24 2 0.923 0.0523 0.826 1
120 12 1 0.877 0.0670 0.755 1
TNM_CLIN_STAGE_GROUP=1A
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 30 0 1.000 0.0000 1.000 1
24 26 0 1.000 0.0000 1.000 1
36 21 2 0.916 0.0567 0.812 1
48 19 0 0.916 0.0567 0.812 1
60 16 0 0.916 0.0567 0.812 1
TNM_CLIN_STAGE_GROUP=1B
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1 0 1 0 1 1
24 1 0 1 0 1 1
36 1 0 1 0 1 1
48 1 0 1 0 1 1
60 1 0 1 0 1 1
TNM_CLIN_STAGE_GROUP=2A
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 19 4 0.826 0.0790 0.685 0.996
24 15 1 0.774 0.0894 0.618 0.971
36 12 1 0.719 0.0986 0.550 0.941
48 11 0 0.719 0.0986 0.550 0.941
60 8 0 0.719 0.0986 0.550 0.941
120 2 0 0.719 0.0986 0.550 0.941
TNM_CLIN_STAGE_GROUP=2B
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 11 1 0.923 0.0739 0.789 1
24 10 1 0.839 0.1045 0.657 1
36 8 1 0.746 0.1279 0.533 1
48 7 0 0.746 0.1279 0.533 1
60 6 0 0.746 0.1279 0.533 1
TNM_CLIN_STAGE_GROUP=3
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1 1 0.5 0.354 0.125 1
24 1 0 0.5 0.354 0.125 1
36 1 0 0.5 0.354 0.125 1
TNM_CLIN_STAGE_GROUP=3A
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 6 1 0.857 0.132 0.6334 1
24 6 0 0.857 0.132 0.6334 1
36 6 0 0.857 0.132 0.6334 1
48 5 0 0.857 0.132 0.6334 1
60 4 1 0.686 0.186 0.4026 1
120 1 1 0.343 0.260 0.0777 1
TNM_CLIN_STAGE_GROUP=3B
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 7 5 0.583 0.142 0.362 0.941
24 6 1 0.500 0.144 0.284 0.880
36 5 1 0.417 0.142 0.213 0.814
48 3 1 0.333 0.136 0.150 0.742
60 3 0 0.333 0.136 0.150 0.742
TNM_CLIN_STAGE_GROUP=3C
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 2 1 0.667 0.272 0.2995 1
24 2 0 0.667 0.272 0.2995 1
36 2 0 0.667 0.272 0.2995 1
48 1 1 0.333 0.272 0.0673 1
60 1 0 0.333 0.272 0.0673 1
TNM_CLIN_STAGE_GROUP=4
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 15 11 0.578 0.0968 0.4160 0.802
24 7 7 0.292 0.0914 0.1582 0.539
36 3 4 0.125 0.0672 0.0437 0.359
48 1 0 0.125 0.0672 0.0437 0.359
60 1 0 0.125 0.0672 0.0437 0.359
TNM_CLIN_STAGE_GROUP=99
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 154 12 0.932 0.0189 0.896 0.970
24 139 2 0.920 0.0206 0.880 0.961
36 118 9 0.857 0.0278 0.805 0.914
48 110 3 0.835 0.0298 0.779 0.896
60 103 4 0.804 0.0326 0.743 0.871
120 39 15 0.646 0.0457 0.562 0.742
## Univariable Cox Proportional Hazard Model for: TNM_CLIN_STAGE_GROUP
Loglik converged before variable 3 ; beta may be infinite. X matrix deemed to be singular; variable 4 5 8 14 15 16 18
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_CLIN_STAGE_GROUP, data = data)
n= 675, number of events= 180
coef exp(coef) se(coef) z Pr(>|z|)
TNM_CLIN_STAGE_GROUP1 -9.685e-01 3.797e-01 4.634e-01 -2.090 0.0366 *
TNM_CLIN_STAGE_GROUP1A -7.286e-01 4.826e-01 5.899e-01 -1.235 0.2168
TNM_CLIN_STAGE_GROUP1B -1.306e+01 2.128e-06 1.445e+03 -0.009 0.9928
TNM_CLIN_STAGE_GROUP1C NA NA 0.000e+00 NA NA
TNM_CLIN_STAGE_GROUP2 NA NA 0.000e+00 NA NA
TNM_CLIN_STAGE_GROUP2A 2.323e-01 1.261e+00 4.249e-01 0.547 0.5846
TNM_CLIN_STAGE_GROUP2B 7.265e-01 2.068e+00 4.631e-01 1.569 0.1167
TNM_CLIN_STAGE_GROUP2C NA NA 0.000e+00 NA NA
TNM_CLIN_STAGE_GROUP3 1.660e+00 5.260e+00 1.009e+00 1.645 0.1001
TNM_CLIN_STAGE_GROUP3A 5.081e-01 1.662e+00 5.896e-01 0.862 0.3888
TNM_CLIN_STAGE_GROUP3B 1.745e+00 5.729e+00 3.542e-01 4.928 8.29e-07 ***
TNM_CLIN_STAGE_GROUP3C 1.136e+00 3.115e+00 7.176e-01 1.583 0.1133
TNM_CLIN_STAGE_GROUP4 2.501e+00 1.220e+01 2.554e-01 9.793 < 2e-16 ***
TNM_CLIN_STAGE_GROUP4A NA NA 0.000e+00 NA NA
TNM_CLIN_STAGE_GROUP4B NA NA 0.000e+00 NA NA
TNM_CLIN_STAGE_GROUP4C NA NA 0.000e+00 NA NA
TNM_CLIN_STAGE_GROUP99 -5.359e-02 9.478e-01 1.853e-01 -0.289 0.7725
TNM_CLIN_STAGE_GROUPN_A NA NA 0.000e+00 NA NA
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
TNM_CLIN_STAGE_GROUP1 3.797e-01 2.634e+00 0.1531 0.9416
TNM_CLIN_STAGE_GROUP1A 4.826e-01 2.072e+00 0.1519 1.5334
TNM_CLIN_STAGE_GROUP1B 2.128e-06 4.699e+05 0.0000 Inf
TNM_CLIN_STAGE_GROUP1C NA NA NA NA
TNM_CLIN_STAGE_GROUP2 NA NA NA NA
TNM_CLIN_STAGE_GROUP2A 1.261e+00 7.927e-01 0.5485 2.9010
TNM_CLIN_STAGE_GROUP2B 2.068e+00 4.836e-01 0.8343 5.1252
TNM_CLIN_STAGE_GROUP2C NA NA NA NA
TNM_CLIN_STAGE_GROUP3 5.260e+00 1.901e-01 0.7273 38.0386
TNM_CLIN_STAGE_GROUP3A 1.662e+00 6.016e-01 0.5234 5.2791
TNM_CLIN_STAGE_GROUP3B 5.729e+00 1.746e-01 2.8614 11.4690
TNM_CLIN_STAGE_GROUP3C 3.115e+00 3.210e-01 0.7632 12.7132
TNM_CLIN_STAGE_GROUP4 1.220e+01 8.199e-02 7.3934 20.1202
TNM_CLIN_STAGE_GROUP4A NA NA NA NA
TNM_CLIN_STAGE_GROUP4B NA NA NA NA
TNM_CLIN_STAGE_GROUP4C NA NA NA NA
TNM_CLIN_STAGE_GROUP99 9.478e-01 1.055e+00 0.6591 1.3630
TNM_CLIN_STAGE_GROUPN_A NA NA NA NA
Concordance= 0.655 (se = 0.022 )
Rsquare= 0.132 (max possible= 0.956 )
Likelihood ratio test= 95.51 on 11 df, p=1.332e-15
Wald test = 134.5 on 11 df, p=0
Score (logrank) test = 211.1 on 11 df, p=0
Transformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 8 rows containing missing values (geom_errorbar).Removed 19 rows containing missing values (geom_text).Removed 19 rows containing missing values (geom_text).Removed 19 rows containing missing values (geom_text).Removed 19 rows containing missing values (geom_text).Removed 19 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).
## Unadjusted Kaplan Meier Overall Survival Curve for: TNM_CLIN_STAGE_GROUP
This manual palette can handle a maximum of 10 values. You have supplied 12.



Pathologic T Stage
#uni_var(test_var = "TNM_PATH_T", data_imp = data)
Pathologic N Stage
#uni_var(test_var = "TNM_PATH_N", data_imp = data)
Pathologic M Stage
#uni_var(test_var = "TNM_PATH_M", data_imp = data)
Pathologic Stage Group
uni_var(test_var = "TNM_PATH_STAGE_GROUP", data_imp = data)
_________________________________________________
## TNM_PATH_STAGE_GROUP
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_PATH_STAGE_GROUP, data = data)
40 observations deleted due to missingness
n events median 0.95LCL 0.95UCL
TNM_PATH_STAGE_GROUP=0 298 58 153.1 138.22 NA
TNM_PATH_STAGE_GROUP=1 55 10 NA 136.77 NA
TNM_PATH_STAGE_GROUP=1A 26 2 NA 73.79 NA
TNM_PATH_STAGE_GROUP=1B 2 0 NA NA NA
TNM_PATH_STAGE_GROUP=2 3 0 NA NA NA
TNM_PATH_STAGE_GROUP=2A 21 6 NA NA NA
TNM_PATH_STAGE_GROUP=2B 8 2 132.9 75.17 NA
TNM_PATH_STAGE_GROUP=3A 4 2 93.6 71.03 NA
TNM_PATH_STAGE_GROUP=3B 6 2 NA 19.65 NA
TNM_PATH_STAGE_GROUP=3C 5 4 10.1 8.15 NA
TNM_PATH_STAGE_GROUP=4 9 7 14.9 12.06 NA
TNM_PATH_STAGE_GROUP=99 198 77 107.9 83.94 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_PATH_STAGE_GROUP, data = data)
40 observations deleted due to missingness
TNM_PATH_STAGE_GROUP=0
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 258 7 0.975 0.00936 0.957 0.993
24 239 3 0.963 0.01139 0.941 0.986
36 209 7 0.934 0.01556 0.904 0.965
48 172 9 0.890 0.02059 0.851 0.931
60 144 7 0.850 0.02452 0.804 0.900
120 33 22 0.636 0.04660 0.551 0.734
TNM_PATH_STAGE_GROUP=1
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 53 0 1.000 0.0000 1.000 1.000
24 51 0 1.000 0.0000 1.000 1.000
36 50 0 1.000 0.0000 1.000 1.000
48 43 1 0.979 0.0206 0.940 1.000
60 40 2 0.934 0.0371 0.864 1.000
120 15 6 0.768 0.0694 0.643 0.917
TNM_PATH_STAGE_GROUP=1A
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 24 0 1.00 0.0000 1.000 1
24 21 0 1.00 0.0000 1.000 1
36 16 1 0.95 0.0487 0.859 1
48 15 0 0.95 0.0487 0.859 1
60 11 0 0.95 0.0487 0.859 1
TNM_PATH_STAGE_GROUP=1B
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 2 0 1 0 1 1
24 2 0 1 0 1 1
36 2 0 1 0 1 1
48 2 0 1 0 1 1
60 1 0 1 0 1 1
TNM_PATH_STAGE_GROUP=2
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 3 0 1 0 1 1
24 3 0 1 0 1 1
36 3 0 1 0 1 1
48 3 0 1 0 1 1
60 3 0 1 0 1 1
120 1 0 1 0 1 1
TNM_PATH_STAGE_GROUP=2A
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 19 2 0.905 0.0641 0.788 1.000
24 17 1 0.854 0.0778 0.715 1.000
36 13 3 0.694 0.1046 0.517 0.933
48 13 0 0.694 0.1046 0.517 0.933
60 12 0 0.694 0.1046 0.517 0.933
120 4 0 0.694 0.1046 0.517 0.933
TNM_PATH_STAGE_GROUP=2B
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 8 0 1.000 0.000 1.0 1
24 6 0 1.000 0.000 1.0 1
36 6 0 1.000 0.000 1.0 1
48 5 0 1.000 0.000 1.0 1
60 5 0 1.000 0.000 1.0 1
120 1 1 0.667 0.272 0.3 1
TNM_PATH_STAGE_GROUP=3A
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 4 0 1 0 1 1
24 4 0 1 0 1 1
36 4 0 1 0 1 1
48 3 0 1 0 1 1
60 3 0 1 0 1 1
TNM_PATH_STAGE_GROUP=3B
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 5 1 0.833 0.152 0.583 1
24 4 1 0.667 0.192 0.379 1
36 4 0 0.667 0.192 0.379 1
48 2 0 0.667 0.192 0.379 1
60 2 0 0.667 0.192 0.379 1
TNM_PATH_STAGE_GROUP=3C
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12.000 2.000 3.000 0.400 0.219 0.137 1.000
TNM_PATH_STAGE_GROUP=4
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 7 2 0.778 0.139 0.5485 1.000
24 3 4 0.333 0.157 0.1323 0.840
36 2 1 0.222 0.139 0.0655 0.754
48 1 0 0.222 0.139 0.0655 0.754
60 1 0 0.222 0.139 0.0655 0.754
TNM_PATH_STAGE_GROUP=99
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 149 29 0.846 0.0264 0.795 0.899
24 125 11 0.780 0.0310 0.721 0.843
36 104 10 0.713 0.0348 0.648 0.784
48 90 7 0.664 0.0370 0.595 0.740
60 80 4 0.633 0.0383 0.562 0.713
120 25 13 0.498 0.0457 0.416 0.596
## Univariable Cox Proportional Hazard Model for: TNM_PATH_STAGE_GROUP
Loglik converged before variable 3,5 ; beta may be infinite. X matrix deemed to be singular; variable 4 8 9 14 15 16 18
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ TNM_PATH_STAGE_GROUP, data = data)
n= 635, number of events= 170
(40 observations deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
TNM_PATH_STAGE_GROUP1 -4.050e-01 6.670e-01 3.430e-01 -1.181 0.238
TNM_PATH_STAGE_GROUP1A -6.421e-01 5.262e-01 7.204e-01 -0.891 0.373
TNM_PATH_STAGE_GROUP1B -1.555e+01 1.772e-07 4.039e+03 -0.004 0.997
TNM_PATH_STAGE_GROUP1C NA NA 0.000e+00 NA NA
TNM_PATH_STAGE_GROUP2 -1.545e+01 1.948e-07 2.619e+03 -0.006 0.995
TNM_PATH_STAGE_GROUP2A 2.827e-01 1.327e+00 4.294e-01 0.658 0.510
TNM_PATH_STAGE_GROUP2B 2.345e-01 1.264e+00 7.196e-01 0.326 0.745
TNM_PATH_STAGE_GROUP2C NA NA 0.000e+00 NA NA
TNM_PATH_STAGE_GROUP3 NA NA 0.000e+00 NA NA
TNM_PATH_STAGE_GROUP3A 8.199e-01 2.270e+00 7.198e-01 1.139 0.255
TNM_PATH_STAGE_GROUP3B 7.690e-01 2.158e+00 7.199e-01 1.068 0.285
TNM_PATH_STAGE_GROUP3C 2.870e+00 1.764e+01 5.315e-01 5.400 6.68e-08 ***
TNM_PATH_STAGE_GROUP4 2.337e+00 1.035e+01 4.062e-01 5.753 8.76e-09 ***
TNM_PATH_STAGE_GROUP4A NA NA 0.000e+00 NA NA
TNM_PATH_STAGE_GROUP4B NA NA 0.000e+00 NA NA
TNM_PATH_STAGE_GROUP4C NA NA 0.000e+00 NA NA
TNM_PATH_STAGE_GROUP99 8.488e-01 2.337e+00 1.747e-01 4.859 1.18e-06 ***
TNM_PATH_STAGE_GROUPN_A NA NA 0.000e+00 NA NA
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
TNM_PATH_STAGE_GROUP1 6.670e-01 1.499e+00 0.3405 1.306
TNM_PATH_STAGE_GROUP1A 5.262e-01 1.900e+00 0.1282 2.160
TNM_PATH_STAGE_GROUP1B 1.772e-07 5.642e+06 0.0000 Inf
TNM_PATH_STAGE_GROUP1C NA NA NA NA
TNM_PATH_STAGE_GROUP2 1.948e-07 5.132e+06 0.0000 Inf
TNM_PATH_STAGE_GROUP2A 1.327e+00 7.538e-01 0.5718 3.078
TNM_PATH_STAGE_GROUP2B 1.264e+00 7.910e-01 0.3085 5.180
TNM_PATH_STAGE_GROUP2C NA NA NA NA
TNM_PATH_STAGE_GROUP3 NA NA NA NA
TNM_PATH_STAGE_GROUP3A 2.270e+00 4.405e-01 0.5539 9.305
TNM_PATH_STAGE_GROUP3B 2.158e+00 4.635e-01 0.5262 8.847
TNM_PATH_STAGE_GROUP3C 1.764e+01 5.669e-02 6.2231 49.993
TNM_PATH_STAGE_GROUP4 1.035e+01 9.662e-02 4.6684 22.945
TNM_PATH_STAGE_GROUP4A NA NA NA NA
TNM_PATH_STAGE_GROUP4B NA NA NA NA
TNM_PATH_STAGE_GROUP4C NA NA NA NA
TNM_PATH_STAGE_GROUP99 2.337e+00 4.279e-01 1.6593 3.291
TNM_PATH_STAGE_GROUPN_A NA NA NA NA
Concordance= 0.691 (se = 0.023 )
Rsquare= 0.099 (max possible= 0.955 )
Likelihood ratio test= 65.86 on 11 df, p=7.419e-10
Wald test = 76.85 on 11 df, p=5.982e-12
Score (logrank) test = 109.2 on 11 df, p=0
Transformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 8 rows containing missing values (geom_errorbar).Removed 19 rows containing missing values (geom_text).Removed 19 rows containing missing values (geom_text).Removed 19 rows containing missing values (geom_text).Removed 19 rows containing missing values (geom_text).Removed 19 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).
## Unadjusted Kaplan Meier Overall Survival Curve for: TNM_PATH_STAGE_GROUP
This manual palette can handle a maximum of 10 values. You have supplied 12.



Margins
uni_var(test_var = "MARGINS", data_imp = data)
_________________________________________________
## MARGINS
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ MARGINS, data = data)
n events median 0.95LCL 0.95UCL
MARGINS=No Residual 511 106 153.1 137.0 NA
MARGINS=Residual, NOS 10 2 NA NA NA
MARGINS=Microscopic Resid 11 4 98.3 23.1 NA
MARGINS=Macroscopic Resid 3 2 112.3 108.5 NA
MARGINS=No surg 122 62 35.5 22.4 51
MARGINS=Unknown 18 4 NA NA NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ MARGINS, data = data)
MARGINS=No Residual
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 459 11 0.978 0.0067 0.964 0.991
24 414 9 0.958 0.0093 0.940 0.976
36 368 15 0.922 0.0128 0.897 0.947
48 315 12 0.890 0.0153 0.860 0.920
60 270 11 0.857 0.0177 0.823 0.892
120 70 40 0.671 0.0309 0.614 0.735
MARGINS=Residual, NOS
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 8 1 0.889 0.105 0.706 1
24 7 1 0.778 0.139 0.549 1
36 5 0 0.778 0.139 0.549 1
48 5 0 0.778 0.139 0.549 1
60 5 0 0.778 0.139 0.549 1
MARGINS=Microscopic Resid
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 11 0 1.000 0.000 1.0000 1
24 7 3 0.707 0.143 0.4758 1
36 6 0 0.707 0.143 0.4758 1
48 5 0 0.707 0.143 0.4758 1
60 4 0 0.707 0.143 0.4758 1
120 1 1 0.354 0.260 0.0836 1
MARGINS=Macroscopic Resid
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 3 0 1 0 1 1
24 3 0 1 0 1 1
36 3 0 1 0 1 1
48 3 0 1 0 1 1
60 3 0 1 0 1 1
MARGINS=No surg
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 68 33 0.694 0.0446 0.612 0.787
24 51 10 0.584 0.0494 0.495 0.689
36 33 9 0.466 0.0530 0.373 0.582
48 23 5 0.389 0.0543 0.296 0.512
60 21 2 0.356 0.0546 0.263 0.480
120 4 3 0.265 0.0613 0.169 0.417
MARGINS=Unknown
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 15 1 0.944 0.054 0.844 1
24 15 0 0.944 0.054 0.844 1
36 12 1 0.881 0.079 0.739 1
48 8 2 0.712 0.125 0.504 1
60 7 0 0.712 0.125 0.504 1
120 4 0 0.712 0.125 0.504 1
## Univariable Cox Proportional Hazard Model for: MARGINS
X matrix deemed to be singular; variable 4
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ MARGINS, data = data)
n= 675, number of events= 180
coef exp(coef) se(coef) z Pr(>|z|)
MARGINSResidual, NOS 0.23881 1.26974 0.71426 0.334 0.7381
MARGINSMicroscopic Resid 0.85753 2.35734 0.51000 1.681 0.0927 .
MARGINSMacroscopic Resid 0.70466 2.02316 0.71470 0.986 0.3242
MARGINSNot evaluable NA NA 0.00000 NA NA
MARGINSNo surg 1.75769 5.79900 0.16369 10.738 <2e-16 ***
MARGINSUnknown 0.01931 1.01950 0.51184 0.038 0.9699
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
MARGINSResidual, NOS 1.270 0.7876 0.3131 5.149
MARGINSMicroscopic Resid 2.357 0.4242 0.8676 6.405
MARGINSMacroscopic Resid 2.023 0.4943 0.4985 8.211
MARGINSNot evaluable NA NA NA NA
MARGINSNo surg 5.799 0.1724 4.2075 7.993
MARGINSUnknown 1.020 0.9809 0.3739 2.780
Concordance= 0.687 (se = 0.016 )
Rsquare= 0.131 (max possible= 0.956 )
Likelihood ratio test= 94.41 on 5 df, p=0
Wald test = 117.1 on 5 df, p=0
Score (logrank) test = 147.3 on 5 df, p=0
Removed 2 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: MARGINS



Margins Yes/No
#uni_var(test_var = "MARGINS_YN", data_imp = data)
30 Day Readmission
uni_var(test_var = "READM_HOSP_30_DAYS_F", data_imp = data)
_________________________________________________
## READM_HOSP_30_DAYS_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ READM_HOSP_30_DAYS_F, data = data)
n events median 0.95LCL 0.95UCL
READM_HOSP_30_DAYS_F=No_Surg_or_No_Readmit 627 168 153.1 132.9 NA
READM_HOSP_30_DAYS_F=Unplan_Readmit_Same 15 5 83.9 74.3 NA
READM_HOSP_30_DAYS_F=Plan_Readmit_Same 18 3 137.0 137.0 NA
READM_HOSP_30_DAYS_F=PlanUnplan_Same 1 1 12.2 NA NA
READM_HOSP_30_DAYS_F=9 14 3 136.8 NA NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ READM_HOSP_30_DAYS_F, data = data)
READM_HOSP_30_DAYS_F=No_Surg_or_No_Readmit
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 522 45 0.925 0.0108 0.904 0.946
24 457 22 0.884 0.0134 0.858 0.911
36 388 25 0.833 0.0160 0.802 0.865
48 324 17 0.794 0.0178 0.760 0.830
60 282 11 0.766 0.0192 0.729 0.804
120 73 42 0.585 0.0298 0.530 0.647
READM_HOSP_30_DAYS_F=Unplan_Readmit_Same
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 12 1 0.929 0.0688 0.803 1.000
24 12 0 0.929 0.0688 0.803 1.000
36 11 0 0.929 0.0688 0.803 1.000
48 11 0 0.929 0.0688 0.803 1.000
60 7 1 0.836 0.1077 0.649 1.000
120 1 3 0.418 0.1789 0.181 0.967
READM_HOSP_30_DAYS_F=Plan_Readmit_Same
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 18 0 1.000 0.0000 1.000 1
24 18 0 1.000 0.0000 1.000 1
36 18 0 1.000 0.0000 1.000 1
48 16 0 1.000 0.0000 1.000 1
60 13 1 0.938 0.0605 0.826 1
120 2 1 0.865 0.0890 0.707 1
READM_HOSP_30_DAYS_F=PlanUnplan_Same
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1 0 1 0 1 1
READM_HOSP_30_DAYS_F=9
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 11 0 1.0 0.000 1.000 1
24 10 0 1.0 0.000 1.000 1
36 10 0 1.0 0.000 1.000 1
48 8 2 0.8 0.126 0.587 1
60 8 0 0.8 0.126 0.587 1
120 3 0 0.8 0.126 0.587 1
## Univariable Cox Proportional Hazard Model for: READM_HOSP_30_DAYS_F
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ READM_HOSP_30_DAYS_F, data = data)
n= 675, number of events= 180
coef exp(coef) se(coef) z Pr(>|z|)
READM_HOSP_30_DAYS_FUnplan_Readmit_Same 0.1854 1.2038 0.4542 0.408 0.6830
READM_HOSP_30_DAYS_FPlan_Readmit_Same -0.8646 0.4212 0.5828 -1.484 0.1379
READM_HOSP_30_DAYS_FPlanUnplan_Same 2.5567 12.8929 1.0107 2.530 0.0114 *
READM_HOSP_30_DAYS_F9 -0.3725 0.6890 0.5829 -0.639 0.5228
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
READM_HOSP_30_DAYS_FUnplan_Readmit_Same 1.2038 0.83074 0.4943 2.932
READM_HOSP_30_DAYS_FPlan_Readmit_Same 0.4212 2.37415 0.1344 1.320
READM_HOSP_30_DAYS_FPlanUnplan_Same 12.8929 0.07756 1.7783 93.475
READM_HOSP_30_DAYS_F9 0.6890 1.45133 0.2198 2.160
Concordance= 0.521 (se = 0.011 )
Rsquare= 0.01 (max possible= 0.956 )
Likelihood ratio test= 6.85 on 4 df, p=0.1439
Wald test = 9.24 on 4 df, p=0.05537
Score (logrank) test = 13.9 on 4 df, p=0.007615
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: READM_HOSP_30_DAYS_F



Radiation Type
uni_var(test_var = "RX_SUMM_RADIATION_F", data_imp = data)
_________________________________________________
## RX_SUMM_RADIATION_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ RX_SUMM_RADIATION_F, data = data)
n events median 0.95LCL 0.95UCL
RX_SUMM_RADIATION_F=None 465 133 134 110.5 NA
RX_SUMM_RADIATION_F=Beam Radiation 200 44 NA 137.0 NA
RX_SUMM_RADIATION_F=Radioactive Implants 2 1 137 NA NA
RX_SUMM_RADIATION_F=Unknown 8 2 60 54.2 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ RX_SUMM_RADIATION_F, data = data)
RX_SUMM_RADIATION_F=None
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 378 37 0.916 0.0132 0.890 0.942
24 337 14 0.880 0.0158 0.850 0.912
36 284 20 0.825 0.0190 0.789 0.863
48 239 13 0.785 0.0211 0.745 0.828
60 203 10 0.751 0.0228 0.707 0.797
120 45 34 0.549 0.0361 0.483 0.624
RX_SUMM_RADIATION_F=Beam Radiation
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 178 9 0.954 0.0150 0.925 0.984
24 153 9 0.903 0.0217 0.862 0.947
36 136 5 0.872 0.0250 0.825 0.923
48 115 6 0.832 0.0287 0.778 0.891
60 103 1 0.825 0.0295 0.769 0.884
120 32 12 0.686 0.0457 0.602 0.782
RX_SUMM_RADIATION_F=Radioactive Implants
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 2 0 1 0 1 1
24 2 0 1 0 1 1
36 2 0 1 0 1 1
48 2 0 1 0 1 1
60 2 0 1 0 1 1
120 1 0 1 0 1 1
RX_SUMM_RADIATION_F=Unknown
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 6 0 1.000 0.000 1.0000 1
24 5 0 1.000 0.000 1.0000 1
36 5 0 1.000 0.000 1.0000 1
48 3 0 1.000 0.000 1.0000 1
60 2 2 0.333 0.272 0.0673 1
120 1 0 0.333 0.272 0.0673 1
## Univariable Cox Proportional Hazard Model for: RX_SUMM_RADIATION_F
X matrix deemed to be singular; variable 3 4 5
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ RX_SUMM_RADIATION_F, data = data)
n= 675, number of events= 180
coef exp(coef) se(coef) z Pr(>|z|)
RX_SUMM_RADIATION_FBeam Radiation -0.41462 0.66059 0.17430 -2.379 0.0174 *
RX_SUMM_RADIATION_FRadioactive Implants -0.18012 0.83517 1.00515 -0.179 0.8578
RX_SUMM_RADIATION_FRadioisotopes NA NA 0.00000 NA NA
RX_SUMM_RADIATION_FBeam + Imp or Isotopes NA NA 0.00000 NA NA
RX_SUMM_RADIATION_FRadiation, NOS NA NA 0.00000 NA NA
RX_SUMM_RADIATION_FUnknown 0.01881 1.01899 0.71316 0.026 0.9790
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
RX_SUMM_RADIATION_FBeam Radiation 0.6606 1.5138 0.4694 0.9296
RX_SUMM_RADIATION_FRadioactive Implants 0.8352 1.1974 0.1165 5.9890
RX_SUMM_RADIATION_FRadioisotopes NA NA NA NA
RX_SUMM_RADIATION_FBeam + Imp or Isotopes NA NA NA NA
RX_SUMM_RADIATION_FRadiation, NOS NA NA NA NA
RX_SUMM_RADIATION_FUnknown 1.0190 0.9814 0.2518 4.1230
Concordance= 0.538 (se = 0.019 )
Rsquare= 0.009 (max possible= 0.956 )
Likelihood ratio test= 6.08 on 3 df, p=0.108
Wald test = 5.69 on 3 df, p=0.1275
Score (logrank) test = 5.77 on 3 df, p=0.1231
Removed 4 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: RX_SUMM_RADIATION_F



Lymphovascular Invasion
uni_var(test_var = "LYMPH_VASCULAR_INVASION_F", data_imp = data)
_________________________________________________
## LYMPH_VASCULAR_INVASION_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ LYMPH_VASCULAR_INVASION_F, data = data)
349 observations deleted due to missingness
n events median 0.95LCL 0.95UCL
LYMPH_VASCULAR_INVASION_F=Neg_LymphVasc_Inv 162 21 NA NA NA
LYMPH_VASCULAR_INVASION_F=Pos_LumphVasc_Inv 10 1 NA 73.8 NA
LYMPH_VASCULAR_INVASION_F=Unknown 154 35 NA 69.7 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ LYMPH_VASCULAR_INVASION_F, data = data)
349 observations deleted due to missingness
LYMPH_VASCULAR_INVASION_F=Neg_LymphVasc_Inv
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 135 4 0.973 0.0133 0.947 0.999
24 114 2 0.957 0.0171 0.925 0.991
36 92 8 0.886 0.0289 0.831 0.945
48 64 3 0.847 0.0353 0.781 0.919
60 41 4 0.789 0.0434 0.708 0.879
LYMPH_VASCULAR_INVASION_F=Pos_LumphVasc_Inv
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 9 0 1 0 1 1
24 9 0 1 0 1 1
36 8 0 1 0 1 1
48 6 0 1 0 1 1
60 5 0 1 0 1 1
LYMPH_VASCULAR_INVASION_F=Unknown
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 112 14 0.899 0.0257 0.850 0.951
24 93 6 0.848 0.0315 0.789 0.912
36 68 4 0.808 0.0360 0.740 0.881
48 51 4 0.757 0.0418 0.679 0.843
60 37 4 0.685 0.0509 0.593 0.793
## Univariable Cox Proportional Hazard Model for: LYMPH_VASCULAR_INVASION_F
X matrix deemed to be singular; variable 2
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ LYMPH_VASCULAR_INVASION_F, data = data)
n= 326, number of events= 57
(349 observations deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
LYMPH_VASCULAR_INVASION_FPos_LumphVasc_Inv -0.5599 0.5713 1.0241 -0.547 0.58456
LYMPH_VASCULAR_INVASION_FN_A NA NA 0.0000 NA NA
LYMPH_VASCULAR_INVASION_FUnknown 0.7197 2.0538 0.2762 2.606 0.00916 **
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
LYMPH_VASCULAR_INVASION_FPos_LumphVasc_Inv 0.5713 1.7505 0.07676 4.252
LYMPH_VASCULAR_INVASION_FN_A NA NA NA NA
LYMPH_VASCULAR_INVASION_FUnknown 2.0538 0.4869 1.19534 3.529
Concordance= 0.617 (se = 0.036 )
Rsquare= 0.025 (max possible= 0.838 )
Likelihood ratio test= 8.27 on 2 df, p=0.01597
Wald test = 7.79 on 2 df, p=0.02036
Score (logrank) test = 8.23 on 2 df, p=0.01635
Removed 2 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: LYMPH_VASCULAR_INVASION_F



Endoscopic/Robotic
uni_var(test_var = "RX_HOSP_SURG_APPR_2010_F", data_imp = data)
_________________________________________________
## RX_HOSP_SURG_APPR_2010_F
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ RX_HOSP_SURG_APPR_2010_F, data = data)
349 observations deleted due to missingness
n events median 0.95LCL 0.95UCL
RX_HOSP_SURG_APPR_2010_F=No_Surg 96 29 69.7 47 NA
RX_HOSP_SURG_APPR_2010_F=Endo_Lap 1 1 29.6 NA NA
RX_HOSP_SURG_APPR_2010_F=Open_Unknown 229 27 NA NA NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ RX_HOSP_SURG_APPR_2010_F, data = data)
349 observations deleted due to missingness
RX_HOSP_SURG_APPR_2010_F=No_Surg
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 61 14 0.834 0.0406 0.758 0.918
24 44 5 0.755 0.0499 0.663 0.860
36 31 4 0.678 0.0580 0.573 0.802
48 20 3 0.601 0.0666 0.484 0.747
60 14 2 0.535 0.0739 0.408 0.702
RX_HOSP_SURG_APPR_2010_F=Endo_Lap
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 1 0 1 0 1 1
24 1 0 1 0 1 1
RX_HOSP_SURG_APPR_2010_F=Open_Unknown
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 194 4 0.981 0.00944 0.963 1.000
24 171 3 0.965 0.01288 0.940 0.991
36 137 7 0.923 0.01989 0.885 0.963
48 101 4 0.892 0.02472 0.844 0.941
60 69 6 0.829 0.03376 0.766 0.898
## Univariable Cox Proportional Hazard Model for: RX_HOSP_SURG_APPR_2010_F
X matrix deemed to be singular; variable 1 2 4 6
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ RX_HOSP_SURG_APPR_2010_F, data = data)
n= 326, number of events= 57
(349 observations deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
RX_HOSP_SURG_APPR_2010_FRobot_Assist NA NA 0.0000 NA NA
RX_HOSP_SURG_APPR_2010_FRobot_to_Open NA NA 0.0000 NA NA
RX_HOSP_SURG_APPR_2010_FEndo_Lap 1.1126 3.0421 1.0228 1.088 0.277
RX_HOSP_SURG_APPR_2010_FEndo_Lap_to_Open NA NA 0.0000 NA NA
RX_HOSP_SURG_APPR_2010_FOpen_Unknown -1.4090 0.2444 0.2693 -5.231 1.68e-07 ***
RX_HOSP_SURG_APPR_2010_FUnknown NA NA 0.0000 NA NA
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
RX_HOSP_SURG_APPR_2010_FRobot_Assist NA NA NA NA
RX_HOSP_SURG_APPR_2010_FRobot_to_Open NA NA NA NA
RX_HOSP_SURG_APPR_2010_FEndo_Lap 3.0421 0.3287 0.4098 22.5814
RX_HOSP_SURG_APPR_2010_FEndo_Lap_to_Open NA NA NA NA
RX_HOSP_SURG_APPR_2010_FOpen_Unknown 0.2444 4.0919 0.1441 0.4143
RX_HOSP_SURG_APPR_2010_FUnknown NA NA NA NA
Concordance= 0.689 (se = 0.03 )
Rsquare= 0.082 (max possible= 0.838 )
Likelihood ratio test= 28.04 on 2 df, p=8.138e-07
Wald test = 30.35 on 2 df, p=2.562e-07
Score (logrank) test = 36.8 on 2 df, p=1.023e-08
Removed 5 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: RX_HOSP_SURG_APPR_2010_F



Surgery Radiation Sequence
uni_var(test_var = "SURG_RAD_SEQ", data_imp = data)
_________________________________________________
## SURG_RAD_SEQ
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SURG_RAD_SEQ, data = data)
n events median 0.95LCL 0.95UCL
SURG_RAD_SEQ=Surg Alone 363 85 153.1 132.9 NA
SURG_RAD_SEQ=Surg then Rad 181 30 NA 136.8 NA
SURG_RAD_SEQ=Rad Alone 19 14 21.3 11.7 NA
SURG_RAD_SEQ=No Treatment 95 44 36.1 26.6 93.4
SURG_RAD_SEQ=Other 15 6 54.2 54.2 NA
SURG_RAD_SEQ=Rad then Surg 2 1 26.9 26.9 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SURG_RAD_SEQ, data = data)
SURG_RAD_SEQ=Surg Alone
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 322 11 0.968 0.00944 0.950 0.987
24 293 8 0.943 0.01267 0.919 0.968
36 257 12 0.903 0.01661 0.871 0.936
48 222 8 0.873 0.01914 0.836 0.911
60 187 9 0.836 0.02204 0.794 0.880
120 44 32 0.612 0.03987 0.539 0.696
SURG_RAD_SEQ=Surg then Rad
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 166 2 0.989 0.00806 0.973 1.000
24 145 5 0.957 0.01587 0.927 0.989
36 131 3 0.937 0.01945 0.899 0.976
48 110 6 0.892 0.02569 0.843 0.944
60 99 0 0.892 0.02569 0.843 0.944
120 29 11 0.746 0.04811 0.658 0.847
SURG_RAD_SEQ=Rad Alone
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 12 7 0.632 0.111 0.4480 0.890
24 8 4 0.421 0.113 0.2485 0.713
36 6 1 0.361 0.112 0.1965 0.663
48 6 0 0.361 0.112 0.1965 0.663
60 5 1 0.301 0.108 0.1486 0.609
120 3 1 0.226 0.104 0.0913 0.557
SURG_RAD_SEQ=No Treatment
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 55 22 0.734 0.0489 0.644 0.836
24 42 6 0.645 0.0549 0.545 0.762
36 27 8 0.505 0.0615 0.398 0.641
48 17 5 0.402 0.0642 0.294 0.549
60 16 1 0.378 0.0646 0.270 0.529
120 1 2 0.284 0.0770 0.167 0.483
SURG_RAD_SEQ=Other
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 7 4 0.718 0.120 0.5177 0.996
24 7 0 0.718 0.120 0.5177 0.996
36 5 0 0.718 0.120 0.5177 0.996
48 3 0 0.718 0.120 0.5177 0.996
60 2 2 0.239 0.199 0.0467 1.000
120 1 0 0.239 0.199 0.0467 1.000
SURG_RAD_SEQ=Rad then Surg
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 2 0 1.0 0.000 1.000 1
24 2 0 1.0 0.000 1.000 1
36 1 1 0.5 0.354 0.125 1
48 1 0 0.5 0.354 0.125 1
60 1 0 0.5 0.354 0.125 1
120 1 0 0.5 0.354 0.125 1
## Univariable Cox Proportional Hazard Model for: SURG_RAD_SEQ
X matrix deemed to be singular; variable 5
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SURG_RAD_SEQ, data = data)
n= 675, number of events= 180
coef exp(coef) se(coef) z Pr(>|z|)
SURG_RAD_SEQSurg then Rad -0.4087 0.6645 0.2127 -1.921 0.05469 .
SURG_RAD_SEQRad Alone 1.5325 4.6296 0.2902 5.280 1.29e-07 ***
SURG_RAD_SEQNo Treatment 1.5731 4.8218 0.1905 8.257 < 2e-16 ***
SURG_RAD_SEQOther 1.2840 3.6109 0.4243 3.026 0.00247 **
SURG_RAD_SEQRad before and after Surg NA NA 0.0000 NA NA
SURG_RAD_SEQRad then Surg 0.6271 1.8722 1.0067 0.623 0.53331
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
SURG_RAD_SEQSurg then Rad 0.6645 1.5049 0.4379 1.008
SURG_RAD_SEQRad Alone 4.6296 0.2160 2.6211 8.177
SURG_RAD_SEQNo Treatment 4.8218 0.2074 3.3192 7.004
SURG_RAD_SEQOther 3.6109 0.2769 1.5721 8.293
SURG_RAD_SEQRad before and after Surg NA NA NA NA
SURG_RAD_SEQRad then Surg 1.8722 0.5341 0.2603 13.467
Concordance= 0.695 (se = 0.021 )
Rsquare= 0.127 (max possible= 0.956 )
Likelihood ratio test= 91.79 on 5 df, p=0
Wald test = 110.1 on 5 df, p=0
Score (logrank) test = 137 on 5 df, p=0
Removed 2 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: SURG_RAD_SEQ



Surgery Yes/No
uni_var(test_var = "SURGERY_YN", data_imp = data)
_________________________________________________
## SURGERY_YN
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SURGERY_YN, data = data)
n events median 0.95LCL 0.95UCL
SURGERY_YN=No 115 58 35.6 24.25 59.7
SURGERY_YN=Ukn 9 4 NA 2.96 NA
SURGERY_YN=Yes 551 118 153.1 136.97 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SURGERY_YN, data = data)
SURGERY_YN=No
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 67 29 0.713 0.0452 0.630 0.808
24 50 10 0.598 0.0506 0.507 0.706
36 33 9 0.477 0.0543 0.381 0.596
48 23 5 0.399 0.0556 0.303 0.524
60 21 2 0.364 0.0559 0.269 0.492
120 4 3 0.272 0.0628 0.173 0.427
SURGERY_YN=Ukn
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 2 4 0.556 0.166 0.31 0.997
24 2 0 0.556 0.166 0.31 0.997
SURGERY_YN=Yes
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 495 13 0.975 0.00675 0.962 0.989
24 445 13 0.949 0.00982 0.930 0.968
36 394 16 0.913 0.01284 0.888 0.939
48 336 14 0.879 0.01528 0.850 0.909
60 289 11 0.849 0.01730 0.815 0.883
120 75 43 0.656 0.03066 0.599 0.719
## Univariable Cox Proportional Hazard Model for: SURGERY_YN
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SURGERY_YN, data = data)
n= 675, number of events= 180
coef exp(coef) se(coef) z Pr(>|z|)
SURGERY_YNUkn 0.7669 2.1532 0.5228 1.467 0.142
SURGERY_YNYes -1.6801 0.1863 0.1639 -10.250 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
SURGERY_YNUkn 2.1532 0.4644 0.7728 5.999
SURGERY_YNYes 0.1863 5.3663 0.1351 0.257
Concordance= 0.675 (se = 0.013 )
Rsquare= 0.127 (max possible= 0.956 )
Likelihood ratio test= 91.81 on 2 df, p=0
Wald test = 116 on 2 df, p=0
Score (logrank) test = 147.9 on 2 df, p=0
no non-missing arguments to min; returning Infno non-missing arguments to max; returning -InfTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisTransformation introduced infinite values in continuous y-axisRemoved 1 rows containing missing values (geom_errorbar).Removed 1 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).Removed 1 rows containing missing values (geom_text).
## Unadjusted Kaplan Meier Overall Survival Curve for: SURGERY_YN



Radiation Yes/No
uni_var(test_var = "RADIATION_YN", data_imp = data)
_________________________________________________
## RADIATION_YN
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ RADIATION_YN, data = data)
7 observations deleted due to missingness
n events median 0.95LCL 0.95UCL
RADIATION_YN=No 466 133 134 110 NA
RADIATION_YN=Yes 202 45 NA 137 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ RADIATION_YN, data = data)
7 observations deleted due to missingness
RADIATION_YN=No
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 379 37 0.916 0.0132 0.891 0.942
24 337 14 0.881 0.0157 0.850 0.912
36 284 20 0.825 0.0190 0.789 0.864
48 239 13 0.785 0.0211 0.745 0.828
60 203 10 0.751 0.0228 0.707 0.797
120 45 34 0.549 0.0361 0.483 0.625
RADIATION_YN=Yes
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 180 9 0.954 0.0149 0.926 0.984
24 155 9 0.904 0.0215 0.863 0.947
36 138 5 0.874 0.0247 0.827 0.924
48 117 6 0.834 0.0284 0.781 0.892
60 105 1 0.827 0.0291 0.772 0.886
120 33 12 0.691 0.0450 0.608 0.785
## Univariable Cox Proportional Hazard Model for: RADIATION_YN
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ RADIATION_YN, data = data)
n= 668, number of events= 178
(7 observations deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
RADIATION_YNYes -0.4091 0.6642 0.1729 -2.367 0.0179 *
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
RADIATION_YNYes 0.6642 1.506 0.4733 0.9321
Concordance= 0.54 (se = 0.019 )
Rsquare= 0.009 (max possible= 0.955 )
Likelihood ratio test= 5.96 on 1 df, p=0.01462
Wald test = 5.6 on 1 df, p=0.01795
Score (logrank) test = 5.68 on 1 df, p=0.01717
## Unadjusted Kaplan Meier Overall Survival Curve for: RADIATION_YN



Chemo Yes/No
uni_var(test_var = "CHEMO_YN", data_imp = data)
_________________________________________________
## CHEMO_YN
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ CHEMO_YN, data = data)
n events median 0.95LCL 0.95UCL
CHEMO_YN=No 563 142 153 134.1 NA
CHEMO_YN=Yes 74 27 137 88.7 NA
CHEMO_YN=Ukn 38 11 128 89.8 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ CHEMO_YN, data = data)
CHEMO_YN=No
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 468 36 0.933 0.0108 0.912 0.954
24 417 14 0.904 0.0130 0.879 0.930
36 359 19 0.860 0.0157 0.830 0.892
48 301 16 0.820 0.0180 0.785 0.856
60 257 11 0.788 0.0196 0.751 0.828
120 66 40 0.603 0.0311 0.545 0.667
CHEMO_YN=Yes
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 64 8 0.890 0.0367 0.821 0.965
24 52 6 0.800 0.0480 0.711 0.900
36 45 5 0.723 0.0544 0.624 0.838
48 38 2 0.689 0.0569 0.586 0.810
60 36 0 0.689 0.0569 0.586 0.810
120 9 5 0.523 0.0834 0.383 0.715
CHEMO_YN=Ukn
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 32 2 0.944 0.0382 0.873 1.000
24 28 3 0.855 0.0601 0.745 0.981
36 23 1 0.819 0.0674 0.697 0.963
48 20 1 0.782 0.0739 0.650 0.941
60 17 2 0.697 0.0869 0.546 0.890
120 4 1 0.634 0.0995 0.466 0.862
## Univariable Cox Proportional Hazard Model for: CHEMO_YN
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ CHEMO_YN, data = data)
n= 675, number of events= 180
coef exp(coef) se(coef) z Pr(>|z|)
CHEMO_YNYes 0.3849 1.4694 0.2101 1.832 0.067 .
CHEMO_YNUkn 0.1531 1.1655 0.3132 0.489 0.625
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
CHEMO_YNYes 1.469 0.6805 0.9734 2.218
CHEMO_YNUkn 1.165 0.8580 0.6309 2.153
Concordance= 0.533 (se = 0.015 )
Rsquare= 0.005 (max possible= 0.956 )
Likelihood ratio test= 3.17 on 2 df, p=0.2046
Wald test = 3.44 on 2 df, p=0.179
Score (logrank) test = 3.48 on 2 df, p=0.1754
Removed 1 rows containing missing values (geom_errorbar).
## Unadjusted Kaplan Meier Overall Survival Curve for: CHEMO_YN



Treatment Yes/No
uni_var(test_var = "Tx_YN", data_imp = data)
_________________________________________________
## Tx_YN
_________________________________________________
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ Tx_YN, data = data)
38 observations deleted due to missingness
n events median 0.95LCL 0.95UCL
Tx_YN=FALSE 81 35 39.2 34.2 NA
Tx_YN=TRUE 556 134 153.1 136.8 NA
Call: survfit(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ Tx_YN, data = data)
38 observations deleted due to missingness
Tx_YN=FALSE
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 48 16 0.769 0.0511 0.675 0.875
24 37 5 0.680 0.0586 0.574 0.805
36 25 6 0.556 0.0665 0.440 0.703
48 16 5 0.436 0.0707 0.318 0.600
60 15 1 0.409 0.0714 0.291 0.576
120 1 2 0.291 0.0894 0.159 0.531
Tx_YN=TRUE
time n.risk n.event survival std.err lower 95% CI upper 95% CI
12 484 28 0.948 0.00959 0.929 0.967
24 432 15 0.917 0.01214 0.894 0.941
36 379 18 0.878 0.01477 0.849 0.907
48 323 13 0.846 0.01667 0.814 0.879
60 278 10 0.818 0.01828 0.783 0.855
120 74 43 0.628 0.03052 0.571 0.691
## Univariable Cox Proportional Hazard Model for: Tx_YN
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ Tx_YN, data = data)
n= 637, number of events= 169
(38 observations deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
Tx_YNTRUE -1.4226 0.2411 0.1950 -7.296 2.97e-13 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
Tx_YNTRUE 0.2411 4.148 0.1645 0.3533
Concordance= 0.595 (se = 0.012 )
Rsquare= 0.062 (max possible= 0.953 )
Likelihood ratio test= 40.63 on 1 df, p=1.841e-10
Wald test = 53.23 on 1 df, p=2.973e-13
Score (logrank) test = 62.55 on 1 df, p=2.554e-15
## Unadjusted Kaplan Meier Overall Survival Curve for: Tx_YN



Tumor specific Variables
Node Size
Cox Proportional Hazard Ratio
Model #1
Full analysis
model_one <- coxph(Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS == 0)
~ SURG_RAD_SEQ + INSURANCE_F + AGE + SEX_F + RACE_F + INCOME_F + U_R_F +
FACILITY_TYPE_F + FACILITY_LOCATION_F + EDUCATION_F,
data = data)
X matrix deemed to be singular; variable 5
model_one %>% summary()
Call:
coxph(formula = Surv(DX_LASTCONTACT_DEATH_MONTHS, PUF_VITAL_STATUS ==
0) ~ SURG_RAD_SEQ + INSURANCE_F + AGE + SEX_F + RACE_F +
INCOME_F + U_R_F + FACILITY_TYPE_F + FACILITY_LOCATION_F +
EDUCATION_F, data = data)
n= 622, number of events= 177
(53 observations deleted due to missingness)
coef exp(coef) se(coef) z Pr(>|z|)
SURG_RAD_SEQSurg then Rad -0.174553 0.839833 0.229399 -0.761 0.446708
SURG_RAD_SEQRad Alone 1.891938 6.632211 0.329250 5.746 9.13e-09 ***
SURG_RAD_SEQNo Treatment 1.574550 4.828569 0.217992 7.223 5.09e-13 ***
SURG_RAD_SEQOther 0.756359 2.130506 0.474954 1.592 0.111274
SURG_RAD_SEQRad before and after Surg NA NA 0.000000 NA NA
SURG_RAD_SEQRad then Surg 2.753756 15.701501 1.173906 2.346 0.018986 *
INSURANCE_FNone 1.414530 4.114554 0.371646 3.806 0.000141 ***
INSURANCE_FMedicaid 0.864891 2.374747 0.440165 1.965 0.049423 *
INSURANCE_FMedicare 0.387196 1.472845 0.236802 1.635 0.102028
INSURANCE_FOther Government 0.554916 1.741795 1.032204 0.538 0.590851
INSURANCE_FUnknown 0.500132 1.648940 0.561456 0.891 0.373048
AGE 0.053398 1.054849 0.008433 6.332 2.43e-10 ***
SEX_FFemale 0.091496 1.095812 0.602556 0.152 0.879309
RACE_FBlack -0.024778 0.975526 0.272419 -0.091 0.927528
RACE_FOther/Unk -2.078791 0.125081 0.877495 -2.369 0.017836 *
RACE_FAsian -0.990017 0.371570 1.036699 -0.955 0.339593
INCOME_F$38,000 - $47,999 -0.189725 0.827186 0.249235 -0.761 0.446519
INCOME_F$48,000 - $62,999 -0.281293 0.754807 0.271549 -1.036 0.300258
INCOME_F$63,000 + -0.073274 0.929346 0.326715 -0.224 0.822544
U_R_FUrban -0.446048 0.640153 0.259889 -1.716 0.086106 .
U_R_FRural 0.189271 1.208369 0.599904 0.316 0.752380
FACILITY_TYPE_FComprehensive Comm Ca Program 0.229468 1.257930 0.264584 0.867 0.385791
FACILITY_TYPE_FAcademic/Research Program -0.028155 0.972237 0.275763 -0.102 0.918677
FACILITY_TYPE_FIntegrated Network Ca Program 0.039657 1.040453 0.302867 0.131 0.895825
FACILITY_LOCATION_FMiddle Atlantic 0.652577 1.920484 0.476217 1.370 0.170582
FACILITY_LOCATION_FSouth Atlantic 0.758401 2.134859 0.457529 1.658 0.097398 .
FACILITY_LOCATION_FEast North Central 0.930786 2.536501 0.454846 2.046 0.040719 *
FACILITY_LOCATION_FEast South Central 1.062595 2.893870 0.495074 2.146 0.031846 *
FACILITY_LOCATION_FWest North Central 1.000011 2.718311 0.475697 2.102 0.035536 *
FACILITY_LOCATION_FWest South Central 1.185656 3.272834 0.486173 2.439 0.014738 *
FACILITY_LOCATION_FMountain 1.074561 2.928708 0.609169 1.764 0.077736 .
FACILITY_LOCATION_FPacific 1.005541 2.733385 0.551861 1.822 0.068441 .
EDUCATION_F13 - 20.9% 0.449626 1.567726 0.260177 1.728 0.083960 .
EDUCATION_F7 - 12.9% 0.085603 1.089374 0.301068 0.284 0.776155
EDUCATION_FLess than 7% -0.240105 0.786545 0.370394 -0.648 0.516828
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
exp(coef) exp(-coef) lower .95 upper .95
SURG_RAD_SEQSurg then Rad 0.8398 1.19071 0.53571 1.3166
SURG_RAD_SEQRad Alone 6.6322 0.15078 3.47856 12.6449
SURG_RAD_SEQNo Treatment 4.8286 0.20710 3.14966 7.4024
SURG_RAD_SEQOther 2.1305 0.46937 0.83985 5.4046
SURG_RAD_SEQRad before and after Surg NA NA NA NA
SURG_RAD_SEQRad then Surg 15.7015 0.06369 1.57294 156.7370
INSURANCE_FNone 4.1146 0.24304 1.98599 8.5245
INSURANCE_FMedicaid 2.3747 0.42110 1.00219 5.6271
INSURANCE_FMedicare 1.4728 0.67896 0.92596 2.3427
INSURANCE_FOther Government 1.7418 0.57412 0.23035 13.1708
INSURANCE_FUnknown 1.6489 0.60645 0.54865 4.9558
AGE 1.0548 0.94800 1.03756 1.0724
SEX_FFemale 1.0958 0.91257 0.33639 3.5697
RACE_FBlack 0.9755 1.02509 0.57195 1.6639
RACE_FOther/Unk 0.1251 7.99480 0.02240 0.6984
RACE_FAsian 0.3716 2.69128 0.04871 2.8345
INCOME_F$38,000 - $47,999 0.8272 1.20892 0.50752 1.3482
INCOME_F$48,000 - $62,999 0.7548 1.32484 0.44330 1.2852
INCOME_F$63,000 + 0.9293 1.07602 0.48987 1.7631
U_R_FUrban 0.6402 1.56213 0.38465 1.0654
U_R_FRural 1.2084 0.82756 0.37287 3.9160
FACILITY_TYPE_FComprehensive Comm Ca Program 1.2579 0.79496 0.74893 2.1129
FACILITY_TYPE_FAcademic/Research Program 0.9722 1.02856 0.56629 1.6692
FACILITY_TYPE_FIntegrated Network Ca Program 1.0405 0.96112 0.57467 1.8837
FACILITY_LOCATION_FMiddle Atlantic 1.9205 0.52070 0.75519 4.8839
FACILITY_LOCATION_FSouth Atlantic 2.1349 0.46841 0.87080 5.2338
FACILITY_LOCATION_FEast North Central 2.5365 0.39424 1.04009 6.1859
FACILITY_LOCATION_FEast South Central 2.8939 0.34556 1.09666 7.6364
FACILITY_LOCATION_FWest North Central 2.7183 0.36788 1.07000 6.9058
FACILITY_LOCATION_FWest South Central 3.2728 0.30555 1.26210 8.4870
FACILITY_LOCATION_FMountain 2.9287 0.34145 0.88746 9.6650
FACILITY_LOCATION_FPacific 2.7334 0.36585 0.92674 8.0620
EDUCATION_F13 - 20.9% 1.5677 0.63787 0.94147 2.6106
EDUCATION_F7 - 12.9% 1.0894 0.91796 0.60382 1.9654
EDUCATION_FLess than 7% 0.7865 1.27138 0.38058 1.6256
Concordance= 0.803 (se = 0.024 )
Rsquare= 0.285 (max possible= 0.962 )
Likelihood ratio test= 208.7 on 34 df, p=0
Wald test = 199.2 on 34 df, p=0
Score (logrank) test = 242.8 on 34 df, p=0
Summary of Model
model_one %>%
tidy(., exponentiate = TRUE) %>%
select(term, estimate, conf.low, conf.high, p.value) %>%
rename(Variable = term,
Hazard_Ratio = estimate) %>%
tbl_df %>%
print(n = nrow(.))
Prediction Logistic Regression Models
Surgery
no_Ukns <- data %>%
filter(SURGERY_YN != "Ukn") %>%
droplevels() %>%
mutate(SURGERY_YN = as.logical(SURGERY_YN))
fit_surg <- glm(SURG_TF ~ AGE_F + SEX_F + RACE_F + INCOME_F + U_R_F +
FACILITY_TYPE_F + FACILITY_LOCATION_F + EDUCATION_F + EXPN_GROUP,
data = no_Ukns)
summary(fit_surg)
Call:
glm(formula = SURG_TF ~ AGE_F + SEX_F + RACE_F + INCOME_F + U_R_F +
FACILITY_TYPE_F + FACILITY_LOCATION_F + EDUCATION_F + EXPN_GROUP,
data = no_Ukns)
Deviance Residuals:
Min 1Q Median 3Q Max
-0.99738 0.02353 0.12814 0.21512 0.51965
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.449454 0.146560 3.067 0.00226 **
AGE_F(54,64] -0.051886 0.046995 -1.104 0.27001
AGE_F(64,74] 0.032495 0.047457 0.685 0.49379
AGE_F(74,100] -0.115168 0.043694 -2.636 0.00862 **
SEX_FFemale 0.003629 0.094402 0.038 0.96935
RACE_FBlack -0.091417 0.052294 -1.748 0.08097 .
RACE_FOther/Unk -0.147488 0.111164 -1.327 0.18511
RACE_FAsian -0.040812 0.118364 -0.345 0.73037
INCOME_F$38,000 - $47,999 0.003332 0.051760 0.064 0.94870
INCOME_F$48,000 - $62,999 -0.043975 0.056143 -0.783 0.43379
INCOME_F$63,000 + -0.002427 0.063726 -0.038 0.96963
U_R_FUrban 0.016326 0.048377 0.337 0.73589
U_R_FRural 0.153684 0.113058 1.359 0.17456
FACILITY_TYPE_FComprehensive Comm Ca Program 0.038554 0.050256 0.767 0.44329
FACILITY_TYPE_FAcademic/Research Program 0.020157 0.054553 0.369 0.71189
FACILITY_TYPE_FIntegrated Network Ca Program 0.032201 0.061660 0.522 0.60171
FACILITY_LOCATION_FMiddle Atlantic 0.113362 0.084882 1.336 0.18222
FACILITY_LOCATION_FSouth Atlantic 0.198912 0.082088 2.423 0.01569 *
FACILITY_LOCATION_FEast North Central 0.193570 0.082079 2.358 0.01868 *
FACILITY_LOCATION_FEast South Central 0.195837 0.096073 2.038 0.04196 *
FACILITY_LOCATION_FWest North Central 0.174205 0.092287 1.888 0.05957 .
FACILITY_LOCATION_FWest South Central 0.115696 0.090969 1.272 0.20395
FACILITY_LOCATION_FMountain 0.276960 0.100844 2.746 0.00621 **
FACILITY_LOCATION_FPacific 0.351090 0.098215 3.575 0.00038 ***
EDUCATION_F13 - 20.9% 0.108274 0.053749 2.014 0.04442 *
EDUCATION_F7 - 12.9% 0.125424 0.059437 2.110 0.03526 *
EDUCATION_FLess than 7% 0.146218 0.070123 2.085 0.03749 *
EXPN_GROUPPre-Expansion 0.125915 0.056428 2.231 0.02603 *
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for gaussian family taken to be 0.1404547)
Null deviance: 90.261 on 612 degrees of freedom
Residual deviance: 82.166 on 585 degrees of freedom
(53 observations deleted due to missingness)
AIC: 565.72
Number of Fisher Scoring iterations: 2
exp(cbind("Odds ratio" = coef(fit_surg), confint.default(fit_surg, level = 0.95)))
Odds ratio 2.5 % 97.5 %
(Intercept) 1.5674558 1.1760975 2.0890426
AGE_F(54,64] 0.9494369 0.8658920 1.0410426
AGE_F(64,74] 1.0330286 0.9412750 1.1337262
AGE_F(74,100] 0.8912164 0.8180712 0.9709016
SEX_FFemale 1.0036353 0.8341048 1.2076227
RACE_FBlack 0.9126367 0.8237300 1.0111393
RACE_FOther/Unk 0.8628729 0.6939428 1.0729265
RACE_FAsian 0.9600095 0.7612445 1.2106732
INCOME_F$38,000 - $47,999 1.0033373 0.9065442 1.1104650
INCOME_F$48,000 - $62,999 0.9569780 0.8572601 1.0682953
INCOME_F$63,000 + 0.9975759 0.8804455 1.1302887
U_R_FUrban 1.0164598 0.9245093 1.1175557
U_R_FRural 1.1661224 0.9343486 1.4553897
FACILITY_TYPE_FComprehensive Comm Ca Program 1.0393072 0.9418161 1.1468900
FACILITY_TYPE_FAcademic/Research Program 1.0203618 0.9168929 1.1355069
FACILITY_TYPE_FIntegrated Network Ca Program 1.0327247 0.9151653 1.1653855
FACILITY_LOCATION_FMiddle Atlantic 1.1200378 0.9483764 1.3227709
FACILITY_LOCATION_FSouth Atlantic 1.2200751 1.0387545 1.4330462
FACILITY_LOCATION_FEast North Central 1.2135739 1.0332386 1.4253840
FACILITY_LOCATION_FEast South Central 1.2163285 1.0075666 1.4683447
FACILITY_LOCATION_FWest North Central 1.1902996 0.9933481 1.4263007
FACILITY_LOCATION_FWest South Central 1.1226542 0.9393181 1.3417739
FACILITY_LOCATION_FMountain 1.3191137 1.0825388 1.6073890
FACILITY_LOCATION_FPacific 1.4206153 1.1718597 1.7221753
EDUCATION_F13 - 20.9% 1.1143536 1.0029335 1.2381518
EDUCATION_F7 - 12.9% 1.1336295 1.0089701 1.2736906
EDUCATION_FLess than 7% 1.1574486 1.0088189 1.3279759
EXPN_GROUPPre-Expansion 1.1341857 1.0154359 1.2668227
LS0tCnRpdGxlOiAiRXh0cmFtYW1tYXJ5IFBhZ2V0IERpc2Vhc2UgLSBSZXZpZXcgb2YgdGhlIE5DREIiCmF1dGhvcjogIlJhbWllIEZhdGh5IgpkYXRlOiAiMTEvMDUvMjAxOSIKb3V0cHV0OgogIGh0bWxfbm90ZWJvb2s6CiAgICB0aGVtZTogdW5pdGVkCiAgICB0b2M6IHllcwogICAgdG9jX2Zsb2F0OiB5ZXMKICBodG1sX2RvY3VtZW50OgogICAgdG9jOiB5ZXMKLS0tCgoKCmBgYHtyLCBlY2hvPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCBtZXNzYWdlPUZBTFNFfQoKbGlicmFyeSgiZ2dwbG90MiIpCmxpYnJhcnkoImRwbHlyIikKbGlicmFyeSgidGlkeXIiKQpsaWJyYXJ5KCJrbml0ciIpCmxpYnJhcnkoInRhYmxlb25lIikKbGlicmFyeSgiZm9yY2F0cyIpCmxpYnJhcnkoInN1cnZpdmFsIikKbGlicmFyeSgibnBzdXJ2IikKbGlicmFyeSgiYnJvb20iKQpsaWJyYXJ5KCJ0aWJibGUiKQpsaWJyYXJ5KCJyZWFkciIpCmxpYnJhcnkoInN1cnZtaW5lciIpCmxpYnJhcnkoInN0cmluZ3IiKQoKCmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvPVRSVUUsIHdhcm5pbmc9RkFMU0UsIG1lc3NhZ2U9VFJVRSkKJyUhaW4lJyA8LSBmdW5jdGlvbih4LHkpISgnJWluJScoeCx5KSkKYGBgCgpgYGB7cn0KcF90YWJsZSA8LSBmdW5jdGlvbih0YWJfZGF0YSwgLi4uKSB7CiAgdGFiX2RhdGFfMiA8LSBkZXBhcnNlKHN1YnN0aXR1dGUodGFiX2RhdGEpKQogIAogIHRhYmxlX3AgPC0gZG8uY2FsbChDcmVhdGVUYWJsZU9uZSwgCiAgICAgICAgICAgICAgICAgICAgIGxpc3QoZGF0YSA9IGFzLm5hbWUodGFiX2RhdGFfMiksIGluY2x1ZGVOQSA9IFRSVUUsIC4uLikpCiAgdGFibGVfcF9vdXQgPC0gcHJpbnQodGFibGVfcCwKICAgICAgICAgICAgICAgICAgICAgICBzaG93QWxsTGV2ZWxzID0gVFJVRSwKICAgICAgICAgICAgICAgICAgICAgICBwcmludFRvZ2dsZSA9IEZBTFNFKQogIGthYmxlKHRhYmxlX3Bfb3V0LAogICAgICAgIGFsaWduID0gImMiKQp9CmBgYAoKCgpgYGB7cn0KZl9wbG90IDwtIGZ1bmN0aW9uKHRlc3RfdmFyLCBkYXRhX2ltcCl7CgogICAgICAgICAgICAgICAgCiAgICAgICAgY2F0KCJfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fIikKICAgICAgICBjYXQoIlxuIikKICAgICAgICBjYXQoIiAgIFxuIyMiLCB0ZXN0X3ZhcikKICAgICAgICBjYXQoIlxuIikKICAgICAgICBjYXQoIl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18iKQogICAgICAgIGNhdCgiXG4iKQoKICAgICAgICAKICAgICAgICBmIDwtIGFzLmZvcm11bGEocGFzdGUoYXMubmFtZSh0ZXN0X3ZhciksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBR0UgKyBTRVggKyBUX1NJWkUgKyBGQUNJTElUWV9UWVBFX0YgKyBGQUNJTElUWV9MT0NBVElPTl9GICsgWUVBUl9PRl9ESUFHTk9TSVMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXAgPSAiIH4gIiApKQogICAgICAgIAogICAgICAgIGRhdGFfaW1wXzIgPC0gZGVwYXJzZShzdWJzdGl0dXRlKGRhdGFfaW1wKSkKICAgICAgICAKICAgICAgICBmaXRfZm4gPC0gZG8uY2FsbCgiZ2xtIiwgCiAgICAgICAgICAgICAgICAgICAgICAgbGlzdChmb3JtdWxhID0gZiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhID0gYXMubmFtZShkYXRhX2ltcF8yKSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYW1pbHkgPSAiYmlub21pYWwiKSkKICAgICAgICAKICAgICAgICBwcmludChzdW1tYXJ5KGZpdF9mbikpCiAgICAgICAgCiAgICAgICAgb3IgPC0gYXMuZGF0YS5mcmFtZShleHAoY29lZmZpY2llbnRzKGZpdF9mbikpKQogICAgICAgIG9yJFZhcmlhYmxlIDwtIHJvd25hbWVzKG9yKQogICAgICAgIHJvd25hbWVzKG9yKSA8LSBjKCkKICAgICAgICBuYW1lcyhvcikgPC0gYygnT2Rkc1JhdGlvJywgJ1ZhcmlhYmxlJykKCiAgICAgICAgY2kgPC0gYXMuZGF0YS5mcmFtZShleHAoY29uZmludChmaXRfZm4pKSkKICAgICAgICBjaSRWYXJpYWJsZSA8LSByb3duYW1lcyhjaSkKICAgICAgICByb3duYW1lcyhjaSkgPC0gYygpCgogICAgICAgIHBfdmFsX2xpc3QgPC0gdGlkeShmaXRfZm4pICU+JQogICAgICAgIHNlbGVjdCh0ZXJtLCBwLnZhbHVlKSAlPiUKICAgICAgICByZW5hbWUoVmFyaWFibGUgPSB0ZXJtKSAlPiUKICAgICAgICBtdXRhdGUocC52YWx1ZSA9IHJvdW5kKHAudmFsdWUsIDQpKQogICAgICAgIHBfdmFsX2xpc3QkcC52YWx1ZSA8LSBhcy5jaGFyYWN0ZXIocF92YWxfbGlzdCRwLnZhbHVlKQogICAgICAgIHBfdmFsX2xpc3QkcC52YWx1ZVtwX3ZhbF9saXN0JHAudmFsdWUgPT0gIjAiXSA8LSAiPCAwLjAwMDEiCgogICAgICAgIGFsbCA8LSBmdWxsX2pvaW4ob3IsIGNpLCBieSA9ICdWYXJpYWJsZScpCiAgICAgICAgYWxsIDwtIGZ1bGxfam9pbihhbGwsIHBfdmFsX2xpc3QsIGJ5ID0gIlZhcmlhYmxlIikKICAgICAgICBuYW1lcyhhbGwpIDwtIGMoJ09kZHNSYXRpbycsICdWYXJpYWJsZScsICdMb3dlcicsICdVcHBlcicsICJwX3ZhbHVlIikKICAgICAgICBhbGwgPC0gbmEub21pdChhbGwpCgogICAgICAgIGFsbCA8LSBhbGwgJT4lCiAgICAgICAgZmlsdGVyKFZhcmlhYmxlICE9ICcoSW50ZXJjZXB0KScpIAoKCiAgICAgICAgdGV4dCA8LSBjYmluZChjKCJWYXJpYWJsZSIsIGFzLmNoYXJhY3RlcihhbGwkVmFyaWFibGUpKSwgCiAgICAgICAgICAgICAgYygiT2RkcyBSYXRpbyIsIGFzLmNoYXJhY3Rlcihyb3VuZChhbGwkT2Rkc1JhdGlvLCAyKSkpLAogICAgICAgICAgICAgIGMoIkxvd2VyIENJIiwgYXMuY2hhcmFjdGVyKHJvdW5kKGFsbCRMb3dlciwgMikpKSwKICAgICAgICAgICAgICBjKCJVcHBlciBDSSIsIGFzLmNoYXJhY3Rlcihyb3VuZChhbGwkVXBwZXIsIDIpKSksCiAgICAgICAgICAgICAgYygicCBWYWx1ZSIsIGFsbCRwX3ZhbHVlKSkKCgogICAgICAgIGZvcmVzdHBsb3QodGV4dCwgCiAgICAgICAgICAgbWVhbiA9IGMoTkEsIGFsbCRPZGRzUmF0aW8pLCAKICAgICAgICAgICBsb3dlciA9IGMoTkEsIGFsbCRMb3dlciksIAogICAgICAgICAgIHVwcGVyID0gYyhOQSwgYWxsJFVwcGVyKSwgCiAgICAgICAgICAgbmV3X3BhZ2UgPSAgIFRSVUUsIHplcm8gPSAxLCAKICAgICAgICAgICBjbGlwID0gYygwLjEsIDEwMCksCiAgICAgICAgICAgaHJ6bF9saW5lcyA9IGxpc3QoIjIiID0gZ3Bhcihjb2w9IiM0NDQ0NDQiKSksCiAgICAgICAgICAgdmVydGljZXMgPSBUUlVFLAogICAgICAgICAgIGdyYXBoLnBvcyA9IDIsCiAgICAgICAgICAgeGxhYiA9ICJPZGRzIFJhdGlvIChsb2cpIiwKICAgICAgICAgICBhbGlnbiA9ICJjIiwKICAgICAgICAgICB0eHRfZ3AgPSBmcFR4dEdwKGNleCA9IDAuNyksCiAgICAgICAgICAgeHRpY2tzID0gZ2V0VGlja3MobG93ID0gYWxsJExvd2VyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZ2ggPSBhbGwkVXBwZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpcD1jKC1JbmYsIEluZiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwPVRSVUUpLAogICAgICAgICAgIGJveHNpemUgPSAwLjEpCiAgICAKfQpgYGAKCmBgYHtyIGNodW5rMiwgY2FjaGU9VFJVRSwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRSwgcmVzdWx0cz0naGlkZSd9CmNvbC53aWR0aCA8LSBjKDM3LCAxMCwgMSwgMSwgMywgMSwgMiwgMSwgMiwgMSwgMSwgMSwgMSwgMSwgMSwgOCwgMiwgMiwgMiwgNCwgNCwgMSwgNCwgMSwgMSwKICAgICAgICAgICAgICAgMSwgMywgMiwgMiwgOCwgMiwgNSwgNSwgNSwgNCwgNSwgNSwgNSw0LCAyLCAxLCAyLCAxLCAzLCAxLCAxLCAxLCAxLCAxLCAxLCAzLAogICAgICAgICAgICAgICAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCA2LCA4LAogICAgICAgICAgICAgICA4LCA4LCAyLCAxLCAxLCAxLCAxLCA4LCAxLCAxLCA4LCAxLCAxLCAyLCAyLCA1LCAyLCA1LCAzLCAxLCAzLCAxLCA4LCA4LCAyLCA4LAogICAgICAgICAgICAgICAyLCA4LCAyLCAyLCAxLCA4LCAxLCAxLCAxLCAxLCAxLCA4LCAxLCAyLCAyLCAyLCAyLCAyLCAxLCAxLCAxLCAyLCAxLCAzLCAxLCAxLAogICAgICAgICAgICAgICAxLCAxLCAxLCAxLCAxLCAxLCAxKQoKY29sLm5hbWVzLmFiciA8LSBjKCJQVUZfQ0FTRV9JRCIsICJQVUZfRkFDSUxJVFlfSUQiLCAiRkFDSUxJVFlfVFlQRV9DRCIsICJGQUNJTElUWV9MT0NBVElPTl9DRCIsCiAgICAgICAgICAgICAgICAgICAiQUdFIiwgIlNFWCIsICJSQUNFIiwgIlNQQU5JU0hfSElTUEFOSUNfT1JJR0lOIiwgIklOU1VSQU5DRV9TVEFUVVMiLAogICAgICAgICAgICAgICAgICAgIk1FRF9JTkNfUVVBUl8wMCIsICJOT19IU0RfUVVBUl8wMCIsICJVUl9DRF8wMyIsICJNRURfSU5DX1FVQVJfMTIiLCAiTk9fSFNEX1FVQVJfMTIiLAogICAgICAgICAgICAgICAgICAgIlVSX0NEXzEzIiwgIkNST1dGTFkiLCAiQ0RDQ19UT1RBTF9CRVNUIiwgIlNFUVVFTkNFX05VTUJFUiIsICJDTEFTU19PRl9DQVNFIiwKICAgICAgICAgICAgICAgICAgICJZRUFSX09GX0RJQUdOT1NJUyIsICJQUklNQVJZX1NJVEUiLCAiTEFURVJBTElUWSIsICJISVNUT0xPR1kiLCAiQkVIQVZJT1IiLCAiR1JBREUiLAogICAgICAgICAgICAgICAgICAgIkRJQUdOT1NUSUNfQ09ORklSTUFUSU9OIiwgIlRVTU9SX1NJWkUiLCAiUkVHSU9OQUxfTk9ERVNfUE9TSVRJVkUiLAogICAgICAgICAgICAgICAgICAgIlJFR0lPTkFMX05PREVTX0VYQU1JTkVEIiwgIkRYX1NUQUdJTkdfUFJPQ19EQVlTIiwgIlJYX1NVTU1fRFhTVEdfUFJPQyIsICJUTk1fQ0xJTl9UIiwKICAgICAgICAgICAgICAgICAgICJUTk1fQ0xJTl9OIiwgIlROTV9DTElOX00iLCAiVE5NX0NMSU5fU1RBR0VfR1JPVVAiLCAiVE5NX1BBVEhfVCIsICJUTk1fUEFUSF9OIiwgIlROTV9QQVRIX00iLAogICAgICAgICAgICAgICAgICAgIlROTV9QQVRIX1NUQUdFX0dST1VQIiwgIlROTV9FRElUSU9OX05VTUJFUiIsICJBTkFMWVRJQ19TVEFHRV9HUk9VUCIsICJDU19NRVRTX0FUX0RYIiwKICAgICAgICAgICAgICAgICAgICJDU19NRVRTX0VWQUwiLCAiQ1NfRVhURU5TSU9OIiwgIkNTX1RVTU9SX1NJWkVFWFRfRVZBTCIsICJDU19NRVRTX0RYX0JPTkUiLCAiQ1NfTUVUU19EWF9CUkFJTiIsCiAgICAgICAgICAgICAgICAgICAiQ1NfTUVUU19EWF9MSVZFUiIsICJDU19NRVRTX0RYX0xVTkciLCAiTFlNUEhfVkFTQ1VMQVJfSU5WQVNJT04iLCAiQ1NfU0lURVNQRUNJRklDX0ZBQ1RPUl8xIiwKICAgICAgICAgICAgICAgICAgICJDU19TSVRFU1BFQ0lGSUNfRkFDVE9SXzIiLCAiQ1NfU0lURVNQRUNJRklDX0ZBQ1RPUl8zIiwgIkNTX1NJVEVTUEVDSUZJQ19GQUNUT1JfNCIsCiAgICAgICAgICAgICAgICAgICAiQ1NfU0lURVNQRUNJRklDX0ZBQ1RPUl81IiwgIkNTX1NJVEVTUEVDSUZJQ19GQUNUT1JfNiIsICJDU19TSVRFU1BFQ0lGSUNfRkFDVE9SXzciLAogICAgICAgICAgICAgICAgICAgIkNTX1NJVEVTUEVDSUZJQ19GQUNUT1JfOCIsICJDU19TSVRFU1BFQ0lGSUNfRkFDVE9SXzkiLCAiQ1NfU0lURVNQRUNJRklDX0ZBQ1RPUl8xMCIsCiAgICAgICAgICAgICAgICAgICAiQ1NfU0lURVNQRUNJRklDX0ZBQ1RPUl8xMSIsICJDU19TSVRFU1BFQ0lGSUNfRkFDVE9SXzEyIiwgIkNTX1NJVEVTUEVDSUZJQ19GQUNUT1JfMTMiLAogICAgICAgICAgICAgICAgICAgIkNTX1NJVEVTUEVDSUZJQ19GQUNUT1JfMTQiLCAiQ1NfU0lURVNQRUNJRklDX0ZBQ1RPUl8xNSIsICJDU19TSVRFU1BFQ0lGSUNfRkFDVE9SXzE2IiwKICAgICAgICAgICAgICAgICAgICJDU19TSVRFU1BFQ0lGSUNfRkFDVE9SXzE3IiwgIkNTX1NJVEVTUEVDSUZJQ19GQUNUT1JfMTgiLCAiQ1NfU0lURVNQRUNJRklDX0ZBQ1RPUl8xOSIsCiAgICAgICAgICAgICAgICAgICAiQ1NfU0lURVNQRUNJRklDX0ZBQ1RPUl8yMCIsICJDU19TSVRFU1BFQ0lGSUNfRkFDVE9SXzIxIiwgIkNTX1NJVEVTUEVDSUZJQ19GQUNUT1JfMjIiLAogICAgICAgICAgICAgICAgICAgIkNTX1NJVEVTUEVDSUZJQ19GQUNUT1JfMjMiLCAiQ1NfU0lURVNQRUNJRklDX0ZBQ1RPUl8yNCIsICJDU19TSVRFU1BFQ0lGSUNfRkFDVE9SXzI1IiwKICAgICAgICAgICAgICAgICAgICJDU19WRVJTSU9OX0xBVEVTVCIsICJEWF9SWF9TVEFSVEVEX0RBWVMiLCAiRFhfU1VSR19TVEFSVEVEX0RBWVMiLCAiRFhfREVGU1VSR19TVEFSVEVEX0RBWVMiLAogICAgICAgICAgICAgICAgICAgIlJYX1NVTU1fU1VSR19QUklNX1NJVEUiLCAiUlhfSE9TUF9TVVJHX0FQUFJfMjAxMCIsICJSWF9TVU1NX1NVUkdJQ0FMX01BUkdJTlMiLAogICAgICAgICAgICAgICAgICAgIlJYX1NVTU1fU0NPUEVfUkVHX0xOX1NVUiIsICJSWF9TVU1NX1NVUkdfT1RIX1JFR0RJUyIsICJTVVJHX0RJU0NIQVJHRV9EQVlTIiwgIlJFQURNX0hPU1BfMzBfREFZUyIsCiAgICAgICAgICAgICAgICAgICAiUkVBU09OX0ZPUl9OT19TVVJHRVJZIiwgIkRYX1JBRF9TVEFSVEVEX0RBWVMiLCAiUlhfU1VNTV9SQURJQVRJT04iLCAiUkFEX0xPQ0FUSU9OX09GX1JYIiwKICAgICAgICAgICAgICAgICAgICJSQURfVFJFQVRfVk9MIiwgIlJBRF9SRUdJT05BTF9SWF9NT0RBTElUWSIsICJSQURfUkVHSU9OQUxfRE9TRV9DR1kiLCAiUkFEX0JPT1NUX1JYX01PREFMSVRZIiwKICAgICAgICAgICAgICAgICAgICJSQURfQk9PU1RfRE9TRV9DR1kiLCAiUkFEX05VTV9UUkVBVF9WT0wiLCAiUlhfU1VNTV9TVVJHUkFEX1NFUSIsICJSQURfRUxBUFNFRF9SWF9EQVlTIiwKICAgICAgICAgICAgICAgICAgICJSRUFTT05fRk9SX05PX1JBRElBVElPTiIsICJEWF9TWVNURU1JQ19TVEFSVEVEX0RBWVMiLCAiRFhfQ0hFTU9fU1RBUlRFRF9EQVlTIiwgIlJYX1NVTU1fQ0hFTU8iLAogICAgICAgICAgICAgICAgICAgIkRYX0hPUk1PTkVfU1RBUlRFRF9EQVlTIiwgIlJYX1NVTU1fSE9STU9ORSIsICJEWF9JTU1VTk9fU1RBUlRFRF9EQVlTIiwgIlJYX1NVTU1fSU1NVU5PVEhFUkFQWSIsCiAgICAgICAgICAgICAgICAgICAiUlhfU1VNTV9UUk5TUExOVF9FTkRPIiwgIlJYX1NVTU1fU1lTVEVNSUNfU1VSX1NFUSIsICJEWF9PVEhFUl9TVEFSVEVEX0RBWVMiLCAiUlhfU1VNTV9PVEhFUiIsCiAgICAgICAgICAgICAgICAgICAiUEFMTElBVElWRV9DQVJFIiwgIlJYX1NVTU1fVFJFQVRNRU5UX1NUQVRVUyIsICJQVUZfMzBfREFZX01PUlRfQ0QiLCAiUFVGXzkwX0RBWV9NT1JUX0NEIiwKICAgICAgICAgICAgICAgICAgICJEWF9MQVNUQ09OVEFDVF9ERUFUSF9NT05USFMiLCAiUFVGX1ZJVEFMX1NUQVRVUyIsICJSWF9IT1NQX1NVUkdfUFJJTV9TSVRFIiwgIlJYX0hPU1BfQ0hFTU8iLAogICAgICAgICAgICAgICAgICAgIlJYX0hPU1BfSU1NVU5PVEhFUkFQWSIsICJSWF9IT1NQX0hPUk1PTkUiLCAiUlhfSE9TUF9PVEhFUiIsICJQVUZfTVVMVF9TT1VSQ0UiLCAiUkVGRVJFTkNFX0RBVEVfRkxBRyIsCiAgICAgICAgICAgICAgICAgICAiUlhfU1VNTV9TQ09QRV9SRUdfTE5fMjAxMiIsICJSWF9IT1NQX0RYU1RHX1BST0MiLCAiUEFMTElBVElWRV9DQVJFX0hPU1AiLCAiVFVNT1JfU0laRV9TVU1NQVJZIiwKICAgICAgICAgICAgICAgICAgICJNRVRTX0FUX0RYX09USEVSIiwgIk1FVFNfQVRfRFhfRElTVEFOVF9MTiIsICJNRVRTX0FUX0RYX0JPTkUiLCAiTUVUU19BVF9EWF9CUkFJTiIsCiAgICAgICAgICAgICAgICAgICAiTUVUU19BVF9EWF9MSVZFUiIsICJNRVRTX0FUX0RYX0xVTkciLCAiTk9fSFNEX1FVQVJfMTYiLCAiTUVEX0lOQ19RVUFSXzE2IiwgIk1FRElDQUlEX0VYUE5fQ09ERSIpCgoKCiNSZWFkIGluIGRhdGEgZm9yIGVhY2ggc3Vic2l0ZQpsaXAgPC0gcmVhZF9md2YoJ05DREJQVUZfTGlwLjMuMjAxNi4wLmRhdCcsIAogICAgICAgICAgICAgICAgICAgICAgIGZ3Zl93aWR0aHMoY29sLndpZHRoLCBjb2xfbmFtZXMgPSBjb2wubmFtZXMuYWJyKSwKICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZXMgPSBjb2xzKC5kZWZhdWx0ID0gY29sX2NoYXJhY3RlcigpKSkKCm1lbGFub21hIDwtIHJlYWRfZndmKCdOQ0RCUFVGX01lbGFub21hLjMuMjAxNi4wLmRhdCcsIAogICAgICAgICAgICAgICAgICAgICAgIGZ3Zl93aWR0aHMoY29sLndpZHRoLCBjb2xfbmFtZXMgPSBjb2wubmFtZXMuYWJyKSwKICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZXMgPSBjb2xzKC5kZWZhdWx0ID0gY29sX2NoYXJhY3RlcigpKSkKICAgICAgICAgICAgICAgICAgICAgICAKc2tpbiA8LSByZWFkX2Z3ZignTkNEQlBVRl9PdFNraW4uMy4yMDE2LjAuZGF0JywgCiAgICAgICAgICAgICAgICAgICAgICAgZndmX3dpZHRocyhjb2wud2lkdGgsIGNvbF9uYW1lcyA9IGNvbC5uYW1lcy5hYnIpLAogICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlcyA9IGNvbHMoLmRlZmF1bHQgPSBjb2xfY2hhcmFjdGVyKCkpKQoKaG9kZ2V4dHIgPC0gcmVhZF9md2YoJ05DREJQVUZfSG9kZ0V4dHIuMy4yMDE2LjAuZGF0JywgCiAgICAgICAgICAgICAgICAgICAgICAgZndmX3dpZHRocyhjb2wud2lkdGgsIGNvbF9uYW1lcyA9IGNvbC5uYW1lcy5hYnIpLAogICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlcyA9IGNvbHMoLmRlZmF1bHQgPSBjb2xfY2hhcmFjdGVyKCkpKQoKaG9kZ25kYWwgPC0gcmVhZF9md2YoJ05DREJQVUZfSG9kZ05kYWwuMy4yMDE2LjAuZGF0JywgCiAgICAgICAgICAgICAgICAgICAgICAgZndmX3dpZHRocyhjb2wud2lkdGgsIGNvbF9uYW1lcyA9IGNvbC5uYW1lcy5hYnIpLAogICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlcyA9IGNvbHMoLmRlZmF1bHQgPSBjb2xfY2hhcmFjdGVyKCkpKQoKTkhMbmRhbCA8LSByZWFkX2Z3ZignTkNEQlBVRl9OSExOZGFsLjMuMjAxNi4wLmRhdCcsIAogICAgICAgICAgICAgICAgICAgICAgIGZ3Zl93aWR0aHMoY29sLndpZHRoLCBjb2xfbmFtZXMgPSBjb2wubmFtZXMuYWJyKSwKICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZXMgPSBjb2xzKC5kZWZhdWx0ID0gY29sX2NoYXJhY3RlcigpKSkKCmJyZWFzdCA8LSAgcmVhZF9md2YoJ05DREJQVUZfQnJlYXN0LjMuMjAxNi4wLmRhdCcsIAogICAgICAgICAgICAgICAgICAgICAgIGZ3Zl93aWR0aHMoY29sLndpZHRoLCBjb2xfbmFtZXMgPSBjb2wubmFtZXMuYWJyKSwKICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZXMgPSBjb2xzKC5kZWZhdWx0ID0gY29sX2NoYXJhY3RlcigpKSkKCnZ1bHZhIDwtICByZWFkX2Z3ZignTkNEQlBVRl9WdWx2YS4zLjIwMTYuMC5kYXQnLCAKICAgICAgICAgICAgICAgICAgICAgICBmd2Zfd2lkdGhzKGNvbC53aWR0aCwgY29sX25hbWVzID0gY29sLm5hbWVzLmFiciksCiAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGVzID0gY29scyguZGVmYXVsdCA9IGNvbF9jaGFyYWN0ZXIoKSkpCgp2YWdpbmEgPC0gIHJlYWRfZndmKCdOQ0RCUFVGX1ZhZ2luYS4zLjIwMTYuMC5kYXQnLCAKICAgICAgICAgICAgICAgICAgICAgICBmd2Zfd2lkdGhzKGNvbC53aWR0aCwgY29sX25hbWVzID0gY29sLm5hbWVzLmFiciksCiAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGVzID0gY29scyguZGVmYXVsdCA9IGNvbF9jaGFyYWN0ZXIoKSkpCgpwZW5pcyA8LSAgcmVhZF9md2YoJ05DREJQVUZfUGVuaXMuMy4yMDE2LjAuZGF0JywgCiAgICAgICAgICAgICAgICAgICAgICAgZndmX3dpZHRocyhjb2wud2lkdGgsIGNvbF9uYW1lcyA9IGNvbC5uYW1lcy5hYnIpLAogICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlcyA9IGNvbHMoLmRlZmF1bHQgPSBjb2xfY2hhcmFjdGVyKCkpKQoKCiNDb21iaW5lIGRhdGEgZm9yIGFsbCBzdWJzaXRlcwpkYXQgPC0gYmluZF9yb3dzKGxpcCwgbWVsYW5vbWEsIHNraW4sIGhvZGdleHRyLCBob2RnbmRhbCwgTkhMbmRhbCwgYnJlYXN0LCAKICAgICAgICAgICAgICAgICB2dWx2YSwgdmFnaW5hLCBwZW5pcykKCnJtKGxpcCwgbWVsYW5vbWEsIHNraW4sIGhvZGdleHRyLCBob2RnbmRhbCwgTkhMbmRhbCwgYnJlYXN0LCB2dWx2YSwgdmFnaW5hLCBwZW5pcykKCnByaW1fc2l0ZV90ZXh0IDwtIGRhdGFfZnJhbWUoUFJJTUFSWV9TSVRFID0gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNsaXAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMoIkMwMDAiLCAiQzAwMSIsICJDMDAyIiwgIkMwMDMiLCAiQzAwNCIsICJDMDA1IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkMwMDYiLCAiQzAwOCIsICJDMDA5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNza2luL21lbGFub21hCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDNDQwIiwgIkM0NDEiLCAiQzQ0MiIsICJDNDQzIiwgIkM0NDQiLCAiQzQ0NSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDNDQ2IiwgIkM0NDciLCAiQzQ0OCIsICJDNDQ5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNicmVhc3QgLSBuaXBwbGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkM1MDAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3ZhZ2luYS92dWx2YQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQzUxMCIsICJDNTExIiwgIkM1MTIiLCAiQzUxOCIsICJDNTE5IiwgIkM1MjkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3BlbmlzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDNjAwIiwgIkM2MDEiLCAiQzYwMiIsICJDNjA4IiwgIkM2MDkiLCAiQzYzOSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSwgICAgICAgICAgICAgICAgClNJVEVfVEVYVCA9IGMoCiAgI2xpcCAKIkMwMC4wIEV4dGVybmFsIExpcDogVXBwZXIgTk9TIiwKIkMwMC4xIEV4dGVybmFsIExpcDogTG93ZXIgTk9TIiwKIkMwMC4yICBFeHRlcm5hbCBMaXA6IE5PUyIsCiJDMDAuMyBMaXA6IFVwcGVyIE11Y29zYSIsIAoiQzAwLjQgTGlwOiBMb3dlciBNdWNvc2EiLCAKIkMwMC41IExpcDogTXVjb3NhIE5PUyIsCiJDMDAuNiBMaXA6IENvbW1pc3N1cmUiLCAKIkMwMC44IExpcDogT3ZlcmxhcHBpbmciLCAKIkMwMC45IExpcCwgTk9TIiwKCgogI3NraW4KIkM0NC4wIFNraW4gb2YgbGlwLCBOT1MiLAoiQzQ0LjEgRXllbGlkIiwKIkM0NC4yIEV4dGVybmFsIGVhciIsCiJDNDQuMyBTa2luIG9mIGVhciBhbmQgdW5zcGVjaWZpZWQgcGFydHMgb2YgZmFjZSIsCiJDNDQuNCBTa2luIG9mIHNjYWxwIGFuZCBuZWNrIiwKIkM0NC41IFNraW4gb2YgdHJ1bmsiLAoiQzQ0LjYgU2tpbiBvZiB1cHBlciBsaW1iIGFuZCBzaG91bGRlciIsCiJDNDQuNyBTa2luIG9mIGxvd2VyIGxpbWIgYW5kIGhpcCIsCiJDNDQuOCBPdmVybGFwcGluZyBsZXNpb24gb2Ygc2tpbiIsCiJDNDQuOSBTa2luLCBOT1MiLCAKCiNicmVhc3QKIkM1MC4wIE5pcHBsZSIsCgojdnVsdmEvdmFnaW5hCiJDNTEuMCBMYWJpdW0gbWFqdXMiLAoiQzUxLjEgTGFiaXVtIG1pbnVzIiwKIkM1MS4yIENsaXRvcmlzIiwKIkM1MS44IE92ZXJsYXBwaW5nIGxlc2lvbiBvZiB2dWx2YSIsCiJDNTEuOSBWdWx2YSwgTk9TIiwKIkM1Mi45IFZhZ2luYSwgTk9TIiwKCiNwZW5pcwoiQzYwLjAgUHJlcHVjZSIsCiJDNjAuMSBHbGFucyBwZW5pcyIsCiJDNjAuMiBCb2R5IG9mIHBlbmlzIiwKIkM2MC44IE92ZXJsYXBwaW5nIGxlc2lvbiBvZiBwZW5pcyIsCiJDNjAuOSBQZW5pcyIsCiJDNjMuMiBTY3JvdHVtLCBOT1MiKSkKCgpkYXQgPC0gbWVyZ2UoZGF0LCBwcmltX3NpdGVfdGV4dCwgYnkgPSAiUFJJTUFSWV9TSVRFIiwgYWxsLnggPSBUUlVFKSAKIApybShwcmltX3NpdGVfdGV4dCkKCiMgY29udmVydCBudW1lcmljIHZhcmlhYmxlcyBmcm9tIGNoYXJhY3RlciBjbGFzcyB0byBudW1lcmljIGNsYXNzCm51bV92YXJzIDwtIGMoIkFHRSIsICJDUk9XRkxZIiwgIlRVTU9SX1NJWkUiLCAiRFhfU1RBR0lOR19QUk9DX0RBWVMiLCAiRFhfUlhfU1RBUlRFRF9EQVlTIiwgIkRYX1NVUkdfU1RBUlRFRF9EQVlTIiwKICAgICAgICAgICAgICAiRFhfREVGU1VSR19TVEFSVEVEX0RBWVMiLCAiU1VSR19ESVNDSEFSR0VfREFZUyIsICJEWF9SQURfU1RBUlRFRF9EQVlTIiwgICJSQURfUkVHSU9OQUxfRE9TRV9DR1kiLAogICAgICAgICAgICAgICJSQURfQk9PU1RfRE9TRV9DR1kiLCAiUkFEX0VMQVBTRURfUlhfREFZUyIsICJEWF9TWVNURU1JQ19TVEFSVEVEX0RBWVMiLCAiRFhfQ0hFTU9fU1RBUlRFRF9EQVlTIiwgCiAgICAgICAgICAgICAgIkRYX0hPUk1PTkVfU1RBUlRFRF9EQVlTIiwgIkRYX09USEVSX1NUQVJURURfREFZUyIsICJEWF9MQVNUQ09OVEFDVF9ERUFUSF9NT05USFMiLAogICAgICAgICAgICAgICJSQURfTlVNX1RSRUFUX1ZPTCIpCgpkYXRbbnVtX3ZhcnNdIDwtIGxhcHBseShkYXRbbnVtX3ZhcnNdLCBhcy5udW1lcmljKQoKCiMgY29udmVydCBmYWN0b3IgdmFyaWFibGVzIGZyb20gY2hhcmFjdGVyIGNsYXNzIHRvIGZhY3RvciBjbGFzcwp2YXJzIDwtIG5hbWVzKGRhdCkKZmFjdF92YXJzIDwtIHZhcnNbISh2YXJzICVpbiUgbnVtX3ZhcnMpXSAjIGJhc2ljYWxseSBhbGwgb2YgdGhlIG5vbi1udW1lcmljcwoKZGF0W2ZhY3RfdmFyc10gPC0gbGFwcGx5KGRhdFtmYWN0X3ZhcnNdLCBhcy5jaGFyYWN0ZXIpCmRhdFtmYWN0X3ZhcnNdIDwtIGxhcHBseShkYXRbZmFjdF92YXJzXSwgYXMuZmFjdG9yKQoKZGF0IDwtIGRhdCAlPiUKICAgICAgICBtdXRhdGUoRkFDSUxJVFlfVFlQRV9GID0gZmN0X3JlY29kZShGQUNJTElUWV9UWVBFX0NELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb21tdW5pdHkgQ2FuY2VyIFByb2dyYW0iID0gIjEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb21wcmVoZW5zaXZlIENvbW0gQ2EgUHJvZ3JhbSIgPSAiMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFjYWRlbWljL1Jlc2VhcmNoIFByb2dyYW0iID0gIjMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnRlZ3JhdGVkIE5ldHdvcmsgQ2EgUHJvZ3JhbSIgPSAiNCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk90aGVyIiA9ICI5IikpICU+JQogICAgICAgIG11dGF0ZShGQUNJTElUWV9MT0NBVElPTl9GID0gZmN0X3JlY29kZShGQUNJTElUWV9MT0NBVElPTl9DRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTmV3IEVuZ2xhbmQiID0gIjEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNaWRkbGUgQXRsYW50aWMiID0gIjIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTb3V0aCBBdGxhbnRpYyIgPSAiMyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVhc3QgTm9ydGggQ2VudHJhbCIgPSAiNCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVhc3QgU291dGggQ2VudHJhbCIgPSAiNSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIldlc3QgTm9ydGggQ2VudHJhbCIgPSAiNiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIldlc3QgU291dGggQ2VudHJhbCIgPSAiNyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vdW50YWluIiA9ICI4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUGFjaWZpYyIgPSAiOSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm91dCBvZiBVUyIgPSAiMCIpKSAlPiUKICAgICAgICBtdXRhdGUoRkFDSUxJVFlfR0VPR1JBUEhZID0gZmN0X2NvbGxhcHNlKEZBQ0lMSVRZX0xPQ0FUSU9OX0NELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vcnRoZWFzdCIgPSBjKCIxIiwgIjIiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTb3V0aCIgPSBjKCIzIiwgIjciKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNaWR3ZXN0IiA9IGMoIjQiLCAiNSIsICI2IiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiV2VzdCIgPSBjKCI4IiwgIjkiKSkpICU+JQogICAgICAgIG11dGF0ZShBR0VfRiA9IGN1dChBR0UsIGMoMCwgNTQsIDY0LCA3NCwgMTAwKSkpICU+JQogICAgICAgIG11dGF0ZShBR0VfNDAgPSBjdXQoQUdFLCBjKDAsIDQwLCAxMDApKSkgJT4lCiAgICAgICAgbXV0YXRlKFNFWF9GID0gZmN0X3JlY29kZShTRVgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1hbGUiID0gIjEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGZW1hbGUiID0gIjIiKSkgJT4lCiAgICAgICAgbXV0YXRlKFJBQ0VfRiA9IGZjdF9jb2xsYXBzZShSQUNFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJXaGl0ZSIgPSBjKCIwMSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCbGFjayIgPSBjKCIwMiIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBc2lhbiIgPSBjKCIwNCIsICIwNSIsICIwNiIsICIwNyIsICIwOCIsICIxMCIsICIxMSIsICIxMiIsICIxMyIsICIxNCIsICIxNSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjE2IiwgIjE3IiwgIjIwIiwgIjIxIiwgIjIyIiwgIjI1IiwgIjI2IiwgIjI3IiwgIjI4IiwgIjMwIiwgIjMxIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMzIiLCAiOTYiLCAiOTciKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT3RoZXIvVW5rIiA9IGMoIjAzIiwgIjk4IiwgIjk5IikpKSAlPiUKICAgICAgICBtdXRhdGUoSElTUEFOSUMgPSBmY3RfY29sbGFwc2UoU1BBTklTSF9ISVNQQU5JQ19PUklHSU4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJZZXMiID0gYygiMSIsICIyIiwgIjMiLCAiNCIsICI1IiwgIjYiLCAiNyIsICI4IiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJObyIgPSBjKCIwIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVbmtub3duIiA9IGMoIjkiKSkpICU+JQogICAgICAgIG11dGF0ZShJTlNVUkFOQ0VfRiA9IGZjdF9yZWNvZGUoSU5TVVJBTkNFX1NUQVRVUywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm9uZSIgPSAiMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlByaXZhdGUiID0gIjEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNZWRpY2FpZCIgPSAiMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1lZGljYXJlIiA9ICIzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT3RoZXIgR292ZXJubWVudCIgPSAiNCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVua25vd24iID0gIjkiKSkgJT4lCiAgICAgICAgbXV0YXRlKElOU1VSQU5DRV9GID0gZmN0X3JlbGV2ZWwoSU5TVVJBTkNFX0YsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlByaXZhdGUiKSkgJT4lCiAgICAgICAgbXV0YXRlKElOQ09NRV9GID0gZmN0X3JlY29kZShNRURfSU5DX1FVQVJfMTIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkxlc3MgdGhhbiAkMzgsMDAwIiA9ICIxIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJDM4LDAwMCAtICQ0Nyw5OTkiID0gIjIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIkNDgsMDAwIC0gJDYyLDk5OSIgPSAiMyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiQ2MywwMDAgKyIgPSAiNCIpKSAlPiUKICAgICAgICBtdXRhdGUoRURVQ0FUSU9OX0YgPSBmY3RfcmVjb2RlKE5PX0hTRF9RVUFSXzEyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjIxJSBvciBtb3JlIiA9ICIxIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIxMyAtIDIwLjklIiA9ICIyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI3IC0gMTIuOSUiID0gIjMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkxlc3MgdGhhbiA3JSIgPSAiNCIpKSAlPiUKICAgICAgICBtdXRhdGUoVV9SX0YgPSBmY3RfY29sbGFwc2UoVVJfQ0RfMTMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNZXRybyIgPSBjKCIxIiwgIjIiLCAiMyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVXJiYW4iID0gYygiNCIsICI1IiwgIjYiLCAiNyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUnVyYWwiID0gYygiOCIsICI5IikpKSAlPiUKICAgICAgICBtdXRhdGUoQ0xBU1NfT0ZfQ0FTRV9GID0gZmN0X2NvbGxhcHNlKENMQVNTX09GX0NBU0UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxfUGFydF9QcmltID0gYygiMTAiLCAiMTEiLCAiMTIiLCAiMTMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjE0IiwgIjIwIiwgIjIxIiwgIjIyIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdGhlcl9GYWNpbGl0eSA9IGMoIjAwIikpKSAlPiUKICAgICAgICBtdXRhdGUoR1JBREVfRiA9IGZjdF9yZWNvZGUoR1JBREUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiR3IgSTogV2VsbCBEaWZmIiA9ICIxIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJHciBJSTogTW9kIERpZmYiID0gIjIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkdyIElJSTogUG9vciBEaWZmIiA9ICIzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJHciBJVjogVW5kaWZmL0FuYXBsYXN0aWMiID0gIjQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5BL1Vua293biIgPSAiOSIpKSAlPiUKICAgICAgICBtdXRhdGUoSElTVE9MT0dZX0YgPSBmY3RfaW5mcmVxKEhJU1RPTE9HWSkpICU+JQogICAgICAgIG11dGF0ZShISVNUT0xPR1lfRiA9IGZhY3RvcihISVNUT0xPR1lfRikpICU+JQogICAgICAgIG11dGF0ZShISVNUT0xPR1lfRl9MSU0gPSBmY3RfbHVtcChISVNUT0xPR1lfRiwgcHJvcCA9IDAuMDUpKSAlPiUKICAgICAgICBtdXRhdGUoVE5NX0NMSU5fVCA9IGZjdF9yZWNvZGUoVE5NX0NMSU5fVCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5fQSIgPSAiODgiKSkgJT4lCiAgICAgICAgbXV0YXRlKFROTV9DTElOX1QgPSBmY3RfcmVsZXZlbChUTk1fQ0xJTl9ULAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjEiKSkgJT4lCiAgICAgICAgbXV0YXRlKFROTV9DTElOX04gPSBmY3RfcmVjb2RlKFROTV9DTElOX04sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOX0EiID0gIjg4IikpICU+JQogICAgICAgIG11dGF0ZShUTk1fQ0xJTl9NID0gZmN0X3JlY29kZShUTk1fQ0xJTl9NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTl9BIiA9ICI4OCIpKSAlPiUKICAgICAgICBtdXRhdGUoVE5NX1BBVEhfVCA9IGZjdF9yZWNvZGUoVE5NX1BBVEhfVCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5fQSIgPSAiODgiKSkgJT4lCiAgICAgICAgbXV0YXRlKFROTV9QQVRIX1QgPSBmY3RfcmVsZXZlbChUTk1fUEFUSF9ULAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjEiKSkgJT4lCiAgICAgICAgbXV0YXRlKFROTV9QQVRIX04gPSBmY3RfcmVjb2RlKFROTV9QQVRIX04sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOX0EiID0gIjg4IikpICU+JQogICAgICAgIG11dGF0ZShUTk1fUEFUSF9NID0gZmN0X3JlY29kZShUTk1fUEFUSF9NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTl9BIiA9ICI4OCIpKSAlPiUKICAgICAgICBtdXRhdGUoVE5NX0NMSU5fU1RBR0VfR1JPVVAgPSBmY3RfcmVjb2RlKFROTV9DTElOX1NUQUdFX0dST1VQLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTl9BIiA9ICI4OCIpKSAlPiUKICAgICAgICBtdXRhdGUoVE5NX1BBVEhfU1RBR0VfR1JPVVAgPSBmY3RfcmVjb2RlKFROTV9QQVRIX1NUQUdFX0dST1VQLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTl9BIiA9ICI4OCIpKSAlPiUKICAgICAgICBtdXRhdGUoTUFSR0lOUyA9IGZjdF9yZWNvZGUoUlhfU1VNTV9TVVJHSUNBTF9NQVJHSU5TLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm8gUmVzaWR1YWwiID0gIjAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmVzaWR1YWwsIE5PUyIgPSAiMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNaWNyb3Njb3BpYyBSZXNpZCIgPSAiMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNYWNyb3Njb3BpYyBSZXNpZCIgPSAiMyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOb3QgZXZhbHVhYmxlIiA9ICI3IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vIHN1cmciID0gIjgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVW5rbm93biIgPSAiOSIpKSAlPiUKICAgICAgICBtdXRhdGUoTUFSR0lOU19ZTiA9IGZjdF9jb2xsYXBzZShSWF9TVU1NX1NVUkdJQ0FMX01BUkdJTlMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlllcyIgPSBjKCIxIiwgIjIiLCAiMyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJObyIgPSBjKCIwIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vIHN1cmcvVW5rL05BIiA9IGMoIjciLCAiOCIsICI5IikpKSAlPiUKICAgICAgICBtdXRhdGUoUkVBRE1fSE9TUF8zMF9EQVlTX0YgPSBmY3RfcmVjb2RlKFJFQURNX0hPU1BfMzBfREFZUywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOb19TdXJnX29yX05vX1JlYWRtaXQiID0gIjAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVucGxhbl9SZWFkbWl0X1NhbWUiID0gIjEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBsYW5fUmVhZG1pdF9TYW1lIiA9ICIyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQbGFuVW5wbGFuX1NhbWUiID0gIjMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVua25vd24iID0gIjQiKSkgJT4lCiAgICAgICAgbXV0YXRlKFJYX1NVTU1fUkFESUFUSU9OX0YgPSBmY3RfcmVjb2RlKFJYX1NVTU1fUkFESUFUSU9OLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm9uZSIgPSAiMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCZWFtIFJhZGlhdGlvbiIgPSAiMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSYWRpb2FjdGl2ZSBJbXBsYW50cyIgPSAiMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSYWRpb2lzb3RvcGVzIiA9ICIzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJlYW0gKyBJbXAgb3IgSXNvdG9wZXMiID0gIjQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmFkaWF0aW9uLCBOT1MiID0gIjUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVW5rbm93biIgPSAiOSIpKSAlPiUKICAgICAgICBtdXRhdGUoUFVGXzMwX0RBWV9NT1JUX0NEX0YgPSBmY3RfcmVjb2RlKFBVRl8zMF9EQVlfTU9SVF9DRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBbGl2ZV8zMCIgPSAiMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRGVhZF8zMCIgPSAiMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVW5rbm93biIgPSAiOSIpKSAlPiUKICAgICAgICBtdXRhdGUoUFVGXzkwX0RBWV9NT1JUX0NEX0YgPSBmY3RfcmVjb2RlKFBVRl85MF9EQVlfTU9SVF9DRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBbGl2ZV85MCIgPSAiMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRGVhZF85MCIgPSAiMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVW5rbm93biIgPSAiOSIpKSAlPiUKICAgICAgICBtdXRhdGUoTFlNUEhfVkFTQ1VMQVJfSU5WQVNJT05fRiA9IGZjdF9yZWNvZGUoTFlNUEhfVkFTQ1VMQVJfSU5WQVNJT04sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOZWdfTHltcGhWYXNjX0ludiIgPSAiMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQb3NfTHVtcGhWYXNjX0ludiIgPSAiMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOX0EiID0gIjgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVW5rbm93biIgPSAiOSIpKSAlPiUKICAgICAgICBtdXRhdGUoUlhfSE9TUF9TVVJHX0FQUFJfMjAxMF9GID0gZmN0X3JlY29kZShSWF9IT1NQX1NVUkdfQVBQUl8yMDEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOb19TdXJnIiA9ICIwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUm9ib3RfQXNzaXN0IiA9ICIxIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUm9ib3RfdG9fT3BlbiIgPSAiMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVuZG9fTGFwIiA9ICIzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRW5kb19MYXBfdG9fT3BlbiIgPSAiNCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk9wZW5fVW5rbm93biIgPSAiNSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVua25vd24iID0gIjkiKSkgJT4lCiAgICAgICAgbXV0YXRlKEFsbCA9ICJBbGwiKSAlPiUKICAgICAgICBtdXRhdGUoQWxsID0gZmFjdG9yKEFsbCkpICU+JQogICAgICAgIG11dGF0ZShSRUFTT05fRk9SX05PX1NVUkdFUllfRiA9IGZjdF9yZWNvZGUoUkVBU09OX0ZPUl9OT19TVVJHRVJZLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN1cmcgcGVyZm9ybWVkIiA9ICIwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdXJnIG5vdCByZWNvbW1lbmRlZCIgPSAiMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm8gc3VyZyBkdWUgdG8gcHQgZmFjdG9ycyIgPSAiMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm8gc3VyZywgcHQgZGllZCIgPSAiNSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3VyZyByZWMsIG5vdCBkb25lIiA9ICI2IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdXJnIHJlYywgcHQgcmVmdXNlZCIgPSAiNyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3VyZyByZWMsIHVuayBpZiBkb25lIiA9ICI4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVbmtub3duIiA9ICI5IikpICU+JQogICAgICAgIG11dGF0ZShTVVJHRVJZX1lOID0gaWZlbHNlKFJFQVNPTl9GT1JfTk9fU1VSR0VSWSA9PSAiMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlllcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFJFQVNPTl9GT1JfTk9fU1VSR0VSWSA9PSAiOSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVa24iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm8iKSkpICU+JQogICAgICAgIG11dGF0ZShTVVJHX1RGID0gY2FzZV93aGVuKFNVUkdFUllfWU4gPT0gIlllcyIgfiBUUlVFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNVUkdFUllfWU4gPT0gIk5vIiB+IEZBTFNFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUgfiBOQSkpICAlPiUKICAgICAgICBtdXRhdGUoUkVBU09OX0ZPUl9OT19SQURJQVRJT05fRiA9IGZjdF9yZWNvZGUoUkVBU09OX0ZPUl9OT19SQURJQVRJT04sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmFkIHBlcmZvcm1lZCIgPSAiMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmFkIG5vdCByZWNvbW1lbmRlZCIgPSAiMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm8gUmFkIGR1ZSB0byBwdCBmYWN0b3JzIiA9ICIyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJObyBSYWQsIHB0IGRpZWQiID0gIjUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJhZCByZWMsIG5vdCBkb25lIiA9ICI2IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSYWQgcmVjLCBwdCByZWZ1c2VkIiA9ICI3IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSYWQgcmVjLCB1bmsgaWYgZG9uZSIgPSAiOCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVW5rbm93biIgPSAiOSIpKSAlPiUKICAgICAgICBtdXRhdGUoUkFESUFUSU9OX1lOID0gaWZlbHNlKFJFQVNPTl9GT1JfTk9fUkFESUFUSU9OID09ICIwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiWWVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoUkVBU09OX0ZPUl9OT19SQURJQVRJT04gPT0gIjkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vIikpKSAlPiUKICAgICAgICBtdXRhdGUoU1VSR1JBRF9TRVFfRiA9IGZjdF9yZWNvZGUoUlhfU1VNTV9TVVJHUkFEX1NFUSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vbmUgb3IgU3VyZyBvciBSYWQiID0gIjAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmFkIGJlZm9yZSBTdXJnIiA9ICIyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN1cmcgYmVmb3JlIFJhZCIgPSAiMyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSYWQgYmVmb3JlIGFuZCBhZnRlciBTdXJnIiA9ICI0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkludHJhb3AgUmFkIiA9ICI1IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkludHJhb3AgUmFkIHBsdXMgb3RoZXIiID0gIjYiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVW5rbm93biIgPSAiOSIpKSAlPiUKICAgICAgICBtdXRhdGUoU1VSR19SQURfU0VRID0gaWZlbHNlKFNVUkdFUllfWU4gPT0gIlllcyIgJiBSWF9TVU1NX1NVUkdSQURfU0VRID09ICIwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdXJnIEFsb25lIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShSQURJQVRJT05fWU4gPT0gIlllcyIgJiBSWF9TVU1NX1NVUkdSQURfU0VRID09ICIwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmFkIEFsb25lIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoU1VSR0VSWV9ZTiA9PSAiTm8iICYgUkFESUFUSU9OX1lOID09ICJObyIgJiBSWF9TVU1NX1NVUkdSQURfU0VRID09ICIwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vIFRyZWF0bWVudCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShSWF9TVU1NX1NVUkdSQURfU0VRID09ICIyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSYWQgdGhlbiBTdXJnIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShSWF9TVU1NX1NVUkdSQURfU0VRID09ICIzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3VyZyB0aGVuIFJhZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFJYX1NVTU1fU1VSR1JBRF9TRVEgPT0gIjQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmFkIGJlZm9yZSBhbmQgYWZ0ZXIgU3VyZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPdGhlciIpKSkpKSkpICU+JQogICAgICAgIG11dGF0ZShTVVJHX1JBRF9TRVEgPSBmY3RfcmVsZXZlbChTVVJHX1JBRF9TRVEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdXJnIEFsb25lIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN1cmcgdGhlbiBSYWQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmFkIEFsb25lIikpICU+JQogICAgICAgIG11dGF0ZShDSEVNT19ZTiA9IGZjdF9jb2xsYXBzZShSWF9TVU1NX0NIRU1PLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm8iID0gYygiMDAiLCAiODIiLCAiODUiLCAiODYiLCAiODciKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlllcyIgPSBjKCIwMSIsICIwMiIsICIwMyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVWtuIiA9IGMoIjg4IiwgIjk5IikpKSAlPiUKICAgICAgICBtdXRhdGUoU1VSR19SQURfU0VRX0MgPSBpZmVsc2UoU1VSR0VSWV9ZTiA9PSAiWWVzIiAmIFJYX1NVTU1fU1VSR1JBRF9TRVEgPT0gIjAiICYgQ0hFTU9fWU4gPT0gIk5vIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdXJnLCBObyByYWQsIE5vIENoZW1vIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShSQURJQVRJT05fWU4gPT0gIlllcyIgJiBSWF9TVU1NX1NVUkdSQURfU0VRID09ICIwIiAmIENIRU1PX1lOID09ICJObyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJhZCwgTm8gU3VyZywgTm8gQ2hlbW8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShTVVJHRVJZX1lOID09ICJObyIgJiBSQURJQVRJT05fWU4gPT0gIk5vIiAmIFJYX1NVTU1fU1VSR1JBRF9TRVEgPT0gIjAiICYgQ0hFTU9fWU4gPT0gIk5vIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vIFN1cmcsIE5vIFJhZCwgTm8gQ2hlbW8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoUlhfU1VNTV9TVVJHUkFEX1NFUSA9PSAiMiIgJiBDSEVNT19ZTiA9PSAiTm8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJhZCB0aGVuIFN1cmcsIE5vIENoZW1vIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShSWF9TVU1NX1NVUkdSQURfU0VRID09ICIzIiAmIENIRU1PX1lOID09ICJObyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN1cmcgdGhlbiBSYWQsIE5vIENoZW1vIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoUlhfU1VNTV9TVVJHUkFEX1NFUSA9PSAiNCIgJiBDSEVNT19ZTiA9PSAiTm8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmFkIGJlZm9yZSBhbmQgYWZ0ZXIgU3VyZywgTm8gQ2hlbW8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShTVVJHRVJZX1lOID09ICJZZXMiICYgUlhfU1VNTV9TVVJHUkFEX1NFUSA9PSAiMCIgJiBDSEVNT19ZTiA9PSAiWWVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN1cmcsIE5vIHJhZCwgWWVzIENoZW1vIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFJBRElBVElPTl9ZTiA9PSAiWWVzIiAmIFJYX1NVTU1fU1VSR1JBRF9TRVEgPT0gIjAiICYgQ0hFTU9fWU4gPT0gIlllcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmFkLCBObyBTdXJnLCBZZXMgQ2hlbW8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFNVUkdFUllfWU4gPT0gIk5vIiAmIFJBRElBVElPTl9ZTiA9PSAiTm8iICYgUlhfU1VNTV9TVVJHUkFEX1NFUSA9PSAiMCIgJiBDSEVNT19ZTiA9PSAiWWVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm8gU3VyZywgTm8gUmFkLCBZZXMgQ2hlbW8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShSWF9TVU1NX1NVUkdSQURfU0VRID09ICIyIiAmIENIRU1PX1lOID09ICJZZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmFkIHRoZW4gU3VyZywgWWVzIENoZW1vIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFJYX1NVTU1fU1VSR1JBRF9TRVEgPT0gIjMiICYgQ0hFTU9fWU4gPT0gIlllcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3VyZyB0aGVuIFJhZCwgWWVzIENoZW1vIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShSWF9TVU1NX1NVUkdSQURfU0VRID09ICI0IiAmIENIRU1PX1lOID09ICJZZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSYWQgYmVmb3JlIGFuZCBhZnRlciBTdXJnLCBZZXMgQ2hlbW8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPdGhlciIpKSkpKSkpKSkpKSkpICU+JQogICAgICAgIG11dGF0ZShTVVJHX1JBRF9TRVFfQyA9IGZjdF9pbmZyZXEoU1VSR19SQURfU0VRX0MpKSAlPiUKICAgICAgICBtdXRhdGUoVF9TSVpFID0gYXMubnVtZXJpYyhUVU1PUl9TSVpFKSkgJT4lCiAgICAgICAgbXV0YXRlKFRfU0laRSA9IGlmZWxzZShUX1NJWkUgPT0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm8gVHVtb3IiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShUX1NJWkUgPiAwICYgVF9TSVpFIDwgMTAgfCBUX1NJWkUgPT0gOTkxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPCAxIGNtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFRfU0laRSA+PSAxMCAmIFRfU0laRSA8IDIwIHwgVF9TSVpFID09IDk5MiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIxLTIgY20iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFRfU0laRSA+PSAyMCAmIFRfU0laRSA8IDMwIHwgVF9TSVpFID09IDk5MywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMi0zIGNtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoVF9TSVpFID49IDMwICYgVF9TSVpFIDwgNDAgfCBUX1NJWkUgPT0gOTk0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMy00IGNtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFRfU0laRSA+PSA0MCAmIFRfU0laRSA8IDUwIHwgVF9TSVpFID09IDk5NSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI0LTUgY20iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFRfU0laRSA+PSA1MCAmIFRfU0laRSA8IDYwIHwgVF9TSVpFID09IDk5NiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiNS02IGNtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoVF9TSVpFID49IDYwICYgVF9TSVpFIDw9IDk4NyB8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVF9TSVpFID09IDk4MCB8IFRfU0laRSA9PSA5ODkgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRfU0laRSA9PSA5OTcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIj42IGNtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoVF9TSVpFID09IDk4OCB8IFRfU0laRSA9PSA5OTksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOQV91bmsiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTWljcm9zY29waWMgZm9jdXMiKSkpKSkpKSkpKSAlPiUKICAgICAgICBtdXRhdGUoVF9TSVpFID0gZmFjdG9yKFRfU0laRSkpICU+JQogICAgICAgIG11dGF0ZShUX1NJWkUgPSBmY3RfcmVsZXZlbChUX1NJWkUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm8gVHVtb3IiLCAiTWljcm9zY29waWMgZm9jdXMiLCAiPCAxIGNtIiwgIjEtMiBjbSIsICIyLTMgY20iLCAiMy00IGNtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjQtNSBjbSIsICI1LTYgY20iLCAiPjYgY20iLCAiTkFfdW5rIikpICU+JQogICAgICAgIG11dGF0ZShtZXRzX2F0X2R4ID0gY2FzZV93aGVuKENTX01FVFNfRFhfTFVORyA9PSAiMSIgfiAiTHVuZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NfTUVUU19EWF9CT05FID09ICIxIiB+ICJCb25lIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU19NRVRTX0RYX0JSQUlOID09ICIxIiB+ICJCcmFpbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NfTUVUU19EWF9MSVZFUiA9PSAiMSIgfiAiTGl2ZXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUgfiAiTm9uZS9PdGhlci9VbmsvTkEiKSkgJT4lCiAgICAgICAgbXV0YXRlKE1FRElDQUlEX0VYUE5fQ09ERSA9IGZjdF9yZWNvZGUoTUVESUNBSURfRVhQTl9DT0RFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOb24tRXhwYW5zaW9uIFN0YXRlIiA9ICIwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSmFuIDIwMTQgRXhwYW5zaW9uIFN0YXRlcyIgPSAiMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVhcmx5IEV4cGFuc2lvbiBTdGF0ZXMgKDIwMTAtMTMpIiA9ICIyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTGF0ZSBFeHBhbnNpb24gU3RhdGVzICg+IEphbiAyMDE0KSIgPSAiMyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN1cHByZXNzZWQgZm9yIEFnZXMgMCAtIDM5IiA9ICI5IikpICAlPiUKICAgICAgICBtdXRhdGUoRVhQTl9HUk9VUCA9ICBjYXNlX3doZW4oTUVESUNBSURfRVhQTl9DT0RFICAlaW4lIGMoIkphbiAyMDE0IEV4cGFuc2lvbiBTdGF0ZXMiKSAmIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlFQVJfT0ZfRElBR05PU0lTICVpbiUgYygiMjAxNCIsICIyMDE1IikgfiAiUG9zdC1FeHBhbnNpb24iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVESUNBSURfRVhQTl9DT0RFICAlaW4lIGMoIkphbiAyMDE0IEV4cGFuc2lvbiBTdGF0ZXMiKSAmIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlFQVJfT0ZfRElBR05PU0lTICVpbiUgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMoIjIwMDQiLCAiMjAwNSIsICIyMDA2IiwgIjIwMDciLCAiMjAwOCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIyMDA5IiwgIjIwMTAiLCAiMjAxMSIsICIyMDEyIiwgIjIwMTMiKSB+ICJQcmUtRXhwYW5zaW9uIiwKICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1FRElDQUlEX0VYUE5fQ09ERSAgJWluJSBjKCJFYXJseSBFeHBhbnNpb24gU3RhdGVzICgyMDEwLTEzKSIpICYgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWUVBUl9PRl9ESUFHTk9TSVMgJWluJSBjKCIyMDEwIiwgIjIwMTEiLCAiMjAxMiIsICIyMDEzIiwgIjIwMTQiLCAiMjAxNSIpIH4gIlBvc3QtRXhwYW5zaW9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNRURJQ0FJRF9FWFBOX0NPREUgICVpbiUgYygiRWFybHkgRXhwYW5zaW9uIFN0YXRlcyAoMjAxMC0xMykiKSAmIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlFQVJfT0ZfRElBR05PU0lTICVpbiUgYygiMjAwNCIsICIyMDA1IiwgIjIwMDYiLCAiMjAwNyIsICIyMDA4IiwgIjIwMDkiKSB+ICJQcmUtRXhwYW5zaW9uIiwKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1FRElDQUlEX0VYUE5fQ09ERSAlaW4lIGMoIk5vbi1FeHBhbnNpb24gU3RhdGUiKSB+ICJQcmUtRXhwYW5zaW9uIiwKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1FRElDQUlEX0VYUE5fQ09ERSAlaW4lIGMoIkxhdGUgRXhwYW5zaW9uIFN0YXRlcyAoPiBKYW4gMjAxNCkiKSB+ICJQcmUtRXhwYW5zaW9uIiwKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVESUNBSURfRVhQTl9DT0RFICVpbiUgYygiTGF0ZSBFeHBhbnNpb24gU3RhdGVzICg+IEphbiAyMDE0KSIpICYgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZRUFSX09GX0RJQUdOT1NJUyAlaW4lIGMoIjIwMTQiLCAiMjAxNSIpIH4gIkV4Y2x1ZGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVESUNBSURfRVhQTl9DT0RFID09ICJTdXBwcmVzc2VkIGZvciBBZ2VzIDAgLSAzOSIgfiAiRXhjbHVkZSIpKSAlPiUKICAKICBtdXRhdGUocHJlXzIwMTQgPSBZRUFSX09GX0RJQUdOT1NJUyAlaW4lIGMoIjIwMDQiLCAiMjAwNSIsICIyMDA2IiwgIjIwMDciLCAiMjAwOCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIyMDA5IiwgIjIwMTAiLCAiMjAxMSIsICIyMDEyIiwgIjIwMTMiKSkgJT4lCiAgCiAgbXV0YXRlKG1ldHNfYXRfZHhfRiA9IGlmZWxzZShtZXRzX2F0X2R4ID09ICJOb25lL090aGVyL1Vuay9OQSIsIEZBTFNFLCBUUlVFKSkgJT4lIAogIAogIG11dGF0ZShUeF9ZTiA9IGlmZWxzZShTVVJHX1JBRF9TRVEgPT0gIk5vIFRyZWF0bWVudCIgJiBDSEVNT19ZTiA9PSAiTm8iLCBGQUxTRSwgCiAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShDSEVNT19ZTiA9PSAiVWtuIiwgTkEsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSkpKQoKZmFjdF92YXJzXzIgPC0gYygiRkFDSUxJVFlfVFlQRV9GIiwgIkZBQ0lMSVRZX0xPQ0FUSU9OX0YiLCAiQUdFX0YiLCAiU0VYX0YiLCAiUkFDRV9GIiwKICAgICAgICAgICAgICAgICAiSElTUEFOSUMiLCAiSU5TVVJBTkNFX0YiLCAiSU5DT01FX0YiLCAiRURVQ0FUSU9OX0YiLCAiVV9SX0YiLAogICAgICAgICAgICAgICAgICJDRENDX1RPVEFMX0JFU1QiLCAiQ0xBU1NfT0ZfQ0FTRV9GIiwgIllFQVJfT0ZfRElBR05PU0lTIiwgIlBSSU1BUllfU0lURSIsICJISVNUT0xPR1kiLAogICAgICAgICAgICAgICAgICJCRUhBVklPUiIsICJHUkFERV9GIiwgIlROTV9DTElOX1QiLCAiVE5NX0NMSU5fTiIsICJUTk1fQ0xJTl9NIiwKICAgICAgICAgICAgICAgICAiVE5NX0NMSU5fU1RBR0VfR1JPVVAiLCAiVE5NX1BBVEhfVCIsICJUTk1fUEFUSF9OIiwgIlROTV9QQVRIX00iLCAiVE5NX1BBVEhfU1RBR0VfR1JPVVAiLAogICAgICAgICAgICAgICAgICJNQVJHSU5TIiwgIlJFQURNX0hPU1BfMzBfREFZU19GIiwgIlJYX1NVTU1fUkFESUFUSU9OX0YiLCAiUFVGXzMwX0RBWV9NT1JUX0NEX0YiLAogICAgICAgICAgICAgICAgICJQVUZfOTBfREFZX01PUlRfQ0RfRiIsICJMWU1QSF9WQVNDVUxBUl9JTlZBU0lPTl9GIiwgIlJYX0hPU1BfU1VSR19BUFBSXzIwMTBfRiIsICJtZXRzX2F0X2R4IikKCgpkYXQgPC0gZGF0ICU+JQogICAgICAgIG11dGF0ZV9hdChmYWN0X3ZhcnNfMiwgZnVucyhmYWN0b3IoLikpKQoKYGBgCgoKIyBFeHRyYWN0IGRhdGEgb2YgaW50ZXJlc3QgCgpgYGB7cn0KIyBFTVBECnNpdGVfY29kZSA8LSBjKAogICNsaXAgIAogICJDMDAwIiwgIkMwMDEiLCAiQzAwMiIsICJDMDAzIiwgIkMwMDQiLCAiQzAwNSIsIkMwMDYiLCAiQzAwOCIsIkMwMDkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAojc2tpbi9tZWxhbm9tYQogICJDNDQwIiwgIkM0NDEiLCAiQzQ0MiIsICJDNDQzIiwgIkM0NDQiLCAiQzQ0NSIsICJDNDQ2IiwgIkM0NDciLCAiQzQ0OCIsICJDNDQ5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAojdmFnaW5hL3Z1bHZhCiAgIkM1MTAiLCAiQzUxMSIsICJDNTEyIiwgIkM1MTgiLCAiQzUxOSIsICJDNTI5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiNwZW5pcwogIkM2MDAiLCAiQzYwMSIsICJDNjAyIiwgIkM2MDgiLCAiQzYwOSIsICJDNjM5IikKCmhpc3RvX2NvZGUgPC0gYygiODU0MiIpCmJlaGF2aW9yX2NvZGUgPC0gYygiMyIpCgpkYXRhIDwtIGRhdCAlPiUKICAgICAgICBmaWx0ZXIoQkVIQVZJT1IgJWluJSBiZWhhdmlvcl9jb2RlKSAlPiUKICAgICAgICBmaWx0ZXIoUFJJTUFSWV9TSVRFICVpbiUgc2l0ZV9jb2RlKSAlPiUKICAgICAgICBmaWx0ZXIoSElTVE9MT0dZICVpbiUgaGlzdG9fY29kZSkgJT4lCiMgICAgICAgIGZpbHRlcihBR0UgPj0gMTgpICU+JQogICAgICAgIGZpbHRlcihpcy5uYShQVUZfVklUQUxfU1RBVFVTKSA9PSBGQUxTRSkgJT4lCiAgICAgICAgZmlsdGVyKGlzLm5hKERYX0xBU1RDT05UQUNUX0RFQVRIX01PTlRIUykgPT0gRkFMU0UpICU+JQogICAgICAgIGZpbHRlcihTRVFVRU5DRV9OVU1CRVIgPT0gIjAwIikgCiMlPiUKIyAgICAgICAgZmlsdGVyKENMQVNTX09GX0NBU0UgJWluJSBjKCIxMCIsICIxMiIsICIxNCIsICIyMiIpKSAlPiUKIyAgICAgICAgZmlsdGVyKElOU1VSQU5DRV9TVEFUVVMgJWluJSBjKCIwIiwgIjEiLCAiMiIsICIzIiwgIjQiKSkKCm5vX0V4Y2x1ZGVzIDwtIGFzLmRhdGEuZnJhbWUoZGF0YSAlPiUgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIoRVhQTl9HUk9VUCAhPSAiRXhjbHVkZSIpIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICU+JSBkcm9wbGV2ZWxzKCkpCgojZmlsZV9wYXRoIDwtIGMoIi9Vc2Vycy9iZWFzdGF0bGlmZS9Hb29nbGUgRHJpdmUvUGVubi9SZXNlYXJjaC9CYXJiaWVyaS9OQ0RCIikKI3NhdmUoZGF0YSwKIyAgICAgIGZpbGUgPSBwYXN0ZTAoZmlsZV9wYXRoLCAiL0VNUERfZGF0YS5SZGEiKSkKYGBgCgpgYGB7ciBsb2FkRGF0YX0KI2xvYWQoIkVNUERfZGF0YS5SZGEiKQpgYGAKCgoKCkRhdGEgaW5jbHVkaW5nIHNraW4gdHVtb3JzIHdhcyBvYnRhaW5lZCBmcm9tIHRoZSBOQ0JEIG9uIE9jdG9iZXIgNywgMjAxOS4gQ2FzZXMgdGhhdCB3ZXJlIGluY2x1ZGVkIGluIHRoaXMgYW5hbHlzaXMgd2VyZSB0aG9zZSB3aXRoOgoKMS4gU2l0ZSBjb2RlczogYHIgc2l0ZV9jb2RlYAoyLiBIaXN0b2xvZ3kgY29kZXM6IGByIGhpc3RvX2NvZGVgCjMuIEJlaGF2aW9yIGNvZGVzOiBgciBiZWhhdmlvcl9jb2RlYAoKClBhdGllbnRzIHdlcmUgZXhjbHVkZWQgaWYgdGhleSBkaWRuJ3QgaGF2ZSB2YWx1ZXMgZm9yIGVpdGhlciBmb2xsb3cgdXAgb3Igdml0YWwgc3RhdHVzLgoKUGF0aWVudHMgd2VyZSBleGNsdWRlZCBpZiB0aGV5IGhhZCBzdXJnZXJ5IHRvIGEgZGlzdGFudCBzaXRlIHVzaW5nIGBSWF9TVU1NX1NVUkdfT1RIX1JFR0RJU2AuIFRoaXMgd2FzIGRvbmUgdG8gYXZvaWQgY29uZm91bmRpbmcgb2YgZGlmZmVyZW50IHN1cmdpY2FsIHByb2NlZHVyZXMuIFdlIGFyZSBvbmx5IGludGVyZXN0ZWQgaW4gc3VyZ2VyeSBhdCB0aGUgcHJpbWFyeSBzaXRlLiBUaGVzZSBkaXN0YW50IHNpdGUgc3VyZ2VyaWVzIHdlcmUgYmVpbmcgY291bnRlZCBpbiB0aGUgc3VyZ2VyeS9yYWRpYXRpb24gc2VxdWVuY2UgYW5kIHRodXMgdG8gc2ltcGxpZnkgYW5hbHlzaXMgdGhleSB3ZXJlIHJlbW92ZWQuIAoKYGBge3J9CgpkYXRhICU+JQogICAgICAgIENyZWF0ZVRhYmxlT25lKGRhdGEgPSAuLAogICAgICAgICAgICAgICAgICAgICB2YXJzID0gYygiUlhfU1VNTV9TVVJHX09USF9SRUdESVMiKSwKICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZU5BID0gVFJVRSkgJT4lCiAgICAgICAgcHJpbnQoLiwKICAgICAgICAgICAgICBzaG93QWxsTGV2ZWxzID0gVFJVRSkKCmRhdGEgPC0gZGF0YSAlPiUKICAgICAgICBmaWx0ZXIoUlhfU1VNTV9TVVJHX09USF9SRUdESVMgPT0gIjAiKSAKYGBgCgoKUmFjZSB3YXMgZ3JvdXBlZCBhcyB3aGl0ZSwgYmxhY2ssIGFzaWFuLCBvdGhlci91bmtub3duClN0YWdlIHdhcyBncm91cGVkIGludG8gMCwgSSwgSUksIElJSSwgSVYsIE5BX1Vua25vd24sIHN0YWdlIDAgd2FzIHJlbW92ZWQKV2hldGhlciBzdXJnZXJ5IHdhcyBwZXJmb3JtZWQgd2FzIGJhc2VkIG9uIHRoZSBgUkVBU09OX0ZPUl9OT19TVVJHRVJZYCB2YXJpYWJsZS4gVGhlIGBTVVJHRVJZX1lOYCB2YXJpYWJsZSB3YXMgY2xhc3NpZmllZCBhcyAnWWVzJywgJ05vJywgb3IgJ1Vua25vd24nLgoKCldoZXRoZXIgcmFkaWF0aW9uIHdhcyBwZXJmb3JtZWQgd2FzIGJhc2VkIG9uIHRoZSBgUkVBU09OX0ZPUl9OT19SQURJQVRJT05gIHZhcmlhYmxlLiBUaGUgYFJBRElBVElPTl9ZTmAgdmFyaWFibGUgd2FzIGNsYXNzaWZpZWQgYXMgJ1llcycsICdObycsIG9yICdVbmtub3duJy4KCgoKIyNUYWJsZSBvZiB2YXJpYWJsZXMgZm9yIGFsbCBjYXNlczoKCmBgYHtyfQoKcF90YWJsZShkYXRhLAogICAgICAgIHZhcnMgPSBjKCJGQUNJTElUWV9UWVBFX0YiLCAiRkFDSUxJVFlfTE9DQVRJT05fRiIsICJGQUNJTElUWV9HRU9HUkFQSFkiLCAgIkFHRSIsICJBR0VfRiIsICJBR0VfNDAiLAogICAgICAgICAgICAgICAgICJTRVhfRiIsICJSQUNFX0YiLCAiSElTUEFOSUMiLCAiSU5TVVJBTkNFX0YiLCAKICAgICAgICAgICAgICAgICAiSU5DT01FX0YiLCAiRURVQ0FUSU9OX0YiLCAiVV9SX0YiLCAiQ1JPV0ZMWSIsICJDRENDX1RPVEFMX0JFU1QiLAogICAgICAgICAgICAgICAgICJTSVRFX1RFWFQiLCAgIkJFSEFWSU9SIiwgIkdSQURFX0YiLAogICAgICAgICAgICAgICAgICJEWF9TVEFHSU5HX1BST0NfREFZUyIsICJUTk1fQ0xJTl9UIiwgIlROTV9DTElOX04iLCAiVE5NX0NMSU5fTSIsCiAgICAgICAgICAgICAgICAgIlROTV9DTElOX1NUQUdFX0dST1VQIiwgIlROTV9QQVRIX1QiLCAiVE5NX1BBVEhfTiIsICJUTk1fUEFUSF9NIiwKICAgICAgICAgICAgICAgICAiVE5NX1BBVEhfU1RBR0VfR1JPVVAiLCAiRFhfUlhfU1RBUlRFRF9EQVlTIiwgIkRYX1NVUkdfU1RBUlRFRF9EQVlTIiwKICAgICAgICAgICAgICAgICAiRFhfREVGU1VSR19TVEFSVEVEX0RBWVMiLCAiTUFSR0lOUyIsICJNQVJHSU5TX1lOIiwgIlNVUkdfRElTQ0hBUkdFX0RBWVMiLAogICAgICAgICAgICAgICAgICJSRUFETV9IT1NQXzMwX0RBWVNfRiIsICJSWF9TVU1NX1JBRElBVElPTl9GIiwgIlBVRl8zMF9EQVlfTU9SVF9DRF9GIiwKICAgICAgICAgICAgICAgICAiUFVGXzkwX0RBWV9NT1JUX0NEX0YiLCAiRFhfTEFTVENPTlRBQ1RfREVBVEhfTU9OVEhTIiwgCiAgICAgICAgICAgICAgICAgIkxZTVBIX1ZBU0NVTEFSX0lOVkFTSU9OX0YiLCAiUlhfSE9TUF9TVVJHX0FQUFJfMjAxMF9GIiwgIlNVUkdfUkFEX1NFUSIsCiAgICAgICAgICAgICAgICAgIlNVUkdfUkFEX1NFUV9DIiwgIlNVUkdFUllfWU4iLCAiUkFESUFUSU9OX1lOIiwgIkNIRU1PX1lOIiwgIm1ldHNfYXRfZHgiLAogICAgICAgICAgICAgICAgICJNRURJQ0FJRF9FWFBOX0NPREUiLCAiRVhQTl9HUk9VUCIsICJTSVRFX1RFWFQiKSkKCgoKcF90YWJsZShub19FeGNsdWRlcywKICAgICAgICB2YXJzID0gYygiRkFDSUxJVFlfVFlQRV9GIiwgIkZBQ0lMSVRZX0xPQ0FUSU9OX0YiLCAiRkFDSUxJVFlfR0VPR1JBUEhZIiwgICJBR0UiLCAiQUdFX0YiLCAiQUdFXzQwIiwKICAgICAgICAgICAgICAgICAiU0VYX0YiLCAiUkFDRV9GIiwgIkhJU1BBTklDIiwgIklOU1VSQU5DRV9GIiwgCiAgICAgICAgICAgICAgICAgIklOQ09NRV9GIiwgIkVEVUNBVElPTl9GIiwgIlVfUl9GIiwgIkNST1dGTFkiLCAiQ0RDQ19UT1RBTF9CRVNUIiwKICAgICAgICAgICAgICAgICAiU0lURV9URVhUIiwgIkJFSEFWSU9SIiwgIkdSQURFX0YiLAogICAgICAgICAgICAgICAgICJEWF9TVEFHSU5HX1BST0NfREFZUyIsICJUTk1fQ0xJTl9UIiwgIlROTV9DTElOX04iLCAiVE5NX0NMSU5fTSIsCiAgICAgICAgICAgICAgICAgIlROTV9DTElOX1NUQUdFX0dST1VQIiwgIlROTV9QQVRIX1QiLCAiVE5NX1BBVEhfTiIsICJUTk1fUEFUSF9NIiwKICAgICAgICAgICAgICAgICAiVE5NX1BBVEhfU1RBR0VfR1JPVVAiLCAiRFhfUlhfU1RBUlRFRF9EQVlTIiwgIkRYX1NVUkdfU1RBUlRFRF9EQVlTIiwKICAgICAgICAgICAgICAgICAiRFhfREVGU1VSR19TVEFSVEVEX0RBWVMiLCAiTUFSR0lOUyIsICJNQVJHSU5TX1lOIiwgIlNVUkdfRElTQ0hBUkdFX0RBWVMiLAogICAgICAgICAgICAgICAgICJSRUFETV9IT1NQXzMwX0RBWVNfRiIsICJSWF9TVU1NX1JBRElBVElPTl9GIiwgIlBVRl8zMF9EQVlfTU9SVF9DRF9GIiwKICAgICAgICAgICAgICAgICAiUFVGXzkwX0RBWV9NT1JUX0NEX0YiLCAiRFhfTEFTVENPTlRBQ1RfREVBVEhfTU9OVEhTIiwgCiAgICAgICAgICAgICAgICAgIkxZTVBIX1ZBU0NVTEFSX0lOVkFTSU9OX0YiLCAiUlhfSE9TUF9TVVJHX0FQUFJfMjAxMF9GIiwgIlNVUkdfUkFEX1NFUSIsCiAgICAgICAgICAgICAgICAgIlNVUkdfUkFEX1NFUV9DIiwgIlRfU0laRSIsICJTVVJHRVJZX1lOIiwgIlJBRElBVElPTl9ZTiIsICJDSEVNT19ZTiIsICJtZXRzX2F0X2R4IiwKICAgICAgICAgICAgICAgICAiTUVESUNBSURfRVhQTl9DT0RFIiwiU0lURV9URVhUIiksIAogICAgICAgIHN0cmF0YSA9ICJFWFBOX0dST1VQIikKCgpwX3RhYmxlKGRhdGEsCiAgICAgICAgdmFycyA9IGMoIllFQVJfT0ZfRElBR05PU0lTIiksCiAgICAgICAgc3RyYXRhID0gYygiTUVESUNBSURfRVhQTl9DT0RFIikpCmBgYAoKCgoKYGBge3J9CgpwcmVFeHBNZWRpY2FyZSAgPC0gbnJvdyhkYXRhICU+JSBmaWx0ZXIoRVhQTl9HUk9VUCA9PSAiUHJlLUV4cGFuc2lvbiIgJiBJTlNVUkFOQ0VfRiA9PSAiTWVkaWNhcmUiKSkKcG9zdEV4cE1lZGljYXJlIDwtIG5yb3coZGF0YSAlPiUgZmlsdGVyKEVYUE5fR1JPVVAgPT0gIlBvc3QtRXhwYW5zaW9uIiAmIElOU1VSQU5DRV9GID09ICJNZWRpY2FyZSIpKQoKIyBwID0gMC4yNSB3aGVuIGNvbXBhcmluZyBjaGFuZ2UgaW4gcHJvcG9ydGlvbiBvZiBwYXRpZW50cyB3aXRoIE1lZGljYXJlIGJlZm9yZSBhbmQgYWZ0ZXIgQUNBIGV4cGFuc2lvbgpwcm9wLnRlc3QoYyhwcmVFeHBNZWRpY2FyZSwgcG9zdEV4cE1lZGljYXJlKSwgCiAgICAgICAgICBjKG5yb3coZGF0YSAlPiUgZmlsdGVyKEVYUE5fR1JPVVAgPT0gIlByZS1FeHBhbnNpb24iKSksIG5yb3coZGF0YSAlPiUgZmlsdGVyKEVYUE5fR1JPVVAgPT0gIlBvc3QtRXhwYW5zaW9uIikpKSkKCnByZUV4cE5vSW5zdXJhbmNlIDwtIG5yb3coZGF0YSAlPiUgZmlsdGVyKEVYUE5fR1JPVVAgPT0gIlByZS1FeHBhbnNpb24iKSAlPiUgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIoSU5TVVJBTkNFX0YgPT0gIk5vbmUiKSkKcG9zdEV4cE5vSW5zdXJhbmNlIDwtIG5yb3coZGF0YSAlPiUgZmlsdGVyKEVYUE5fR1JPVVAgPT0gIlBvc3QtRXhwYW5zaW9uIikgJT4lIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcihJTlNVUkFOQ0VfRiA9PSAiTm9uZSIpKQoKIyBTaWduaWZpY2FudCBkZWNyZWFzZSBpbiB0aGUgb3ZlcmFsbCBwcm9wb3J0aW9uIG9mIHBhdGllbnRzIHdpdGhvdXQgaW5zdXJhbmNlIGFmdGVyIEFDQSBleHBhbnNpb24gCnByb3AudGVzdChjKHByZUV4cE5vSW5zdXJhbmNlLCBwb3N0RXhwTm9JbnN1cmFuY2UpLCAKICAgICAgICAgIGMobnJvdyhkYXRhICU+JSBmaWx0ZXIoRVhQTl9HUk9VUCA9PSAiUHJlLUV4cGFuc2lvbiIpKSwgbnJvdyhkYXRhICU+JSBmaWx0ZXIoRVhQTl9HUk9VUCA9PSAiUG9zdC1FeHBhbnNpb24iKSkpKQoKcF90YWJsZShub19FeGNsdWRlcywgc3RyYXRhID0gIkVYUE5fR1JPVVAiLCB2YXJzID0gIkRYX1JYX1NUQVJURURfREFZUyIpCgpkYXRhIDwtIGRhdGEgJT4lIG11dGF0ZShJbnN1cmVkID0gSU5TVVJBTkNFX0YgIT0gIlVua25vd24iKQoKYGBgCgoKCgojS2FwbGFuIE1laWVyIEFuYWx5c2lzCgoKIyNBbGwKCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIkFsbCIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI0ZhY2lsaXR5IFR5cGUKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiRkFDSUxJVFlfVFlQRV9GIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjRmFjaWxpdHkgTG9jYXRpb24KCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIkZBQ0lMSVRZX0xPQ0FUSU9OX0YiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNGYWNpbGl0eSBHZW9ncmFwaHkKCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIkZBQ0lMSVRZX0dFT0dSQVBIWSIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI0FnZSBHcm91cAoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiQUdFX0YiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNBZ2UgR3JvdXAKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiQUdFXzQwIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjR2VuZGVyCgpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJTRVhfRiIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI1JBQ0VfRgoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiUkFDRV9GIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjSGlzcGFuaWMKCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIkhJU1BBTklDIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjSW5zdXJhbmNlIFN0YXR1cwoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiSU5TVVJBTkNFX0YiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNPdmVyYWxsIFN1cnZpdmFsIHByZS9wb3N0LUFDQSBleHBhbnNpb24KCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIkVYUE5fR1JPVVAiLCBkYXRhX2ltcCA9IG5vX0V4Y2x1ZGVzKQpgYGAKCgo8IS0tICMjSW5jb21lIC0tPgoKPCEtLSBgYGB7cn0gLS0+CjwhLS0gY2xhc3MoZGF0YSRJTkNPTUVfRikgLS0+CjwhLS0gdW5pX3Zhcih0ZXN0X3ZhciA9ICJJTkNPTUVfRiIsIGRhdGFfaW1wID0gZGF0YSkgLS0+CjwhLS0gYGBgIC0tPgoKIyNFZHVjYXRpb24KCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIkVEVUNBVElPTl9GIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjVXJiYW4vUnVyYWwKCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIlVfUl9GIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjQ2xhc3MgKHRyZWF0bWVudCBhdCBwZXJmb3JtaW5nIGZhY2lsaXR5KQoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiQ0xBU1NfT0ZfQ0FTRV9GIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjWWVhcgoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiWUVBUl9PRl9ESUFHTk9TSVMiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNQcmltYXJ5IFNpdGUKCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIlNJVEVfVEVYVCIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgoKIyNIaXN0b2xvZ3kKCmBgYHtyfQojdW5pX3Zhcih0ZXN0X3ZhciA9ICJISVNUT0xPR1lfRl9MSU0iLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKPCEtLSAjI0JlaGF2aW9yIC0tPgoKPCEtLSBgYGB7cn0gLS0+CjwhLS0gdW5pX3Zhcih0ZXN0X3ZhciA9ICJCRUhBVklPUiIsIGRhdGFfaW1wID0gZGF0YSkgLS0+CjwhLS0gYGBgIC0tPgoKIyNHcmFkZQoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiR1JBREVfRiIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI0NsaW5pY2FsIFQgU3RhZ2UKCmBgYHtyfQojdW5pX3Zhcih0ZXN0X3ZhciA9ICJUTk1fQ0xJTl9UIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjQ2xpbmljYWwgTiBTdGFnZQoKYGBge3J9CiN1bmlfdmFyKHRlc3RfdmFyID0gIlROTV9DTElOX04iLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNDbGluaWNhbCBNIFN0YWdlCgpgYGB7cn0KI3VuaV92YXIodGVzdF92YXIgPSAiVE5NX0NMSU5fTSIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI0NsaW5pY2FsIFN0YWdlIEdyb3VwCgpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJUTk1fQ0xJTl9TVEFHRV9HUk9VUCIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI1BhdGhvbG9naWMgVCBTdGFnZQoKYGBge3J9CiN1bmlfdmFyKHRlc3RfdmFyID0gIlROTV9QQVRIX1QiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNQYXRob2xvZ2ljIE4gU3RhZ2UKCmBgYHtyfQojdW5pX3Zhcih0ZXN0X3ZhciA9ICJUTk1fUEFUSF9OIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjUGF0aG9sb2dpYyBNIFN0YWdlCgpgYGB7cn0KI3VuaV92YXIodGVzdF92YXIgPSAiVE5NX1BBVEhfTSIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI1BhdGhvbG9naWMgU3RhZ2UgR3JvdXAKCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIlROTV9QQVRIX1NUQUdFX0dST1VQIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjTWFyZ2lucwpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJNQVJHSU5TIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjTWFyZ2lucyBZZXMvTm8KYGBge3J9CiN1bmlfdmFyKHRlc3RfdmFyID0gIk1BUkdJTlNfWU4iLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyMzMCBEYXkgUmVhZG1pc3Npb24KCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIlJFQURNX0hPU1BfMzBfREFZU19GIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjUmFkaWF0aW9uIFR5cGUKCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIlJYX1NVTU1fUkFESUFUSU9OX0YiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKCiMjTHltcGhvdmFzY3VsYXIgSW52YXNpb24KCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIkxZTVBIX1ZBU0NVTEFSX0lOVkFTSU9OX0YiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNFbmRvc2NvcGljL1JvYm90aWMKCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIlJYX0hPU1BfU1VSR19BUFBSXzIwMTBfRiIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI1N1cmdlcnkgUmFkaWF0aW9uIFNlcXVlbmNlIAoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiU1VSR19SQURfU0VRIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjU3VyZ2VyeSBZZXMvTm8KCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIlNVUkdFUllfWU4iLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNSYWRpYXRpb24gWWVzL05vCgpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJSQURJQVRJT05fWU4iLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNDaGVtbyBZZXMvTm8KCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIkNIRU1PX1lOIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCgojI1RyZWF0bWVudCBZZXMvTm8KYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiVHhfWU4iLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNNZXRhc3Rhc2VzIGF0IER4CmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIm1ldHNfYXRfZHhfRiIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgo8IS0tICMjVHVtb3IgU2l6ZSAtLT4KCjwhLS0gYGBge3J9IC0tPgo8IS0tIHVuaV92YXIodGVzdF92YXIgPSAiVF9TSVpFIiwgZGF0YV9pbXAgPSBkYXRhKSAtLT4KPCEtLSBgYGAgLS0+CgojVHVtb3Igc3BlY2lmaWMgVmFyaWFibGVzCgoKIyMjTm9kZSBTaXplCgoKI0NveCBQcm9wb3J0aW9uYWwgSGF6YXJkIFJhdGlvCgojI01vZGVsICMxCgojIyNGdWxsIGFuYWx5c2lzCgpgYGB7cn0KbW9kZWxfb25lIDwtIGNveHBoKFN1cnYoRFhfTEFTVENPTlRBQ1RfREVBVEhfTU9OVEhTLCBQVUZfVklUQUxfU1RBVFVTID09IDApCiAgICAgICAgICAgICAgICAgICAgIH4gU1VSR19SQURfU0VRICsgSU5TVVJBTkNFX0YgKyBBR0UgKyBTRVhfRiArIFJBQ0VfRiArIElOQ09NRV9GICsgVV9SX0YgKwogICAgICAgICAgICAgICAgICAgICAgRkFDSUxJVFlfVFlQRV9GICsgRkFDSUxJVFlfTE9DQVRJT05fRiArIEVEVUNBVElPTl9GLAogICAgICAgICAgICAgICAgICAgICBkYXRhID0gZGF0YSkKbW9kZWxfb25lICU+JSBzdW1tYXJ5KCkKCgpgYGAKCiMjI1N1bW1hcnkgb2YgTW9kZWwKCmBgYHtyfQptb2RlbF9vbmUgJT4lCiAgICAgICAgdGlkeSguLCBleHBvbmVudGlhdGUgPSBUUlVFKSAlPiUKICAgICAgICBzZWxlY3QodGVybSwgZXN0aW1hdGUsIGNvbmYubG93LCBjb25mLmhpZ2gsIHAudmFsdWUpICU+JQogICAgICAgIHJlbmFtZShWYXJpYWJsZSA9IHRlcm0sCiAgICAgICAgICAgICAgIEhhemFyZF9SYXRpbyA9IGVzdGltYXRlKSAlPiUKICAgICAgICB0YmxfZGYgJT4lCiAgICAgICAgcHJpbnQobiA9IG5yb3coLikpCgpgYGAKCiMgUHJlZGljdGlvbiBMb2dpc3RpYyBSZWdyZXNzaW9uIE1vZGVscwoKIyMgU3VyZ2VyeQpgYGB7cn0KCm5vX1VrbnMgPC0gZGF0YSAlPiUKICBmaWx0ZXIoU1VSR0VSWV9ZTiAhPSAiVWtuIikgJT4lIAogIGRyb3BsZXZlbHMoKSAlPiUgCiAgbXV0YXRlKFNVUkdFUllfWU4gPSBhcy5sb2dpY2FsKFNVUkdFUllfWU4pKQoKZml0X3N1cmcgPC0gZ2xtKFNVUkdfVEYgfiBBR0VfRiArIFNFWF9GICsgUkFDRV9GICsgSU5DT01FX0YgKyBVX1JfRiArCiAgICAgICAgICAgICAgICAgICAgICBGQUNJTElUWV9UWVBFX0YgKyBGQUNJTElUWV9MT0NBVElPTl9GICsgRURVQ0FUSU9OX0YgKyBFWFBOX0dST1VQLAogICBkYXRhID0gbm9fVWtucykKCnN1bW1hcnkoZml0X3N1cmcpCgpleHAoY2JpbmQoIk9kZHMgcmF0aW8iID0gY29lZihmaXRfc3VyZyksIGNvbmZpbnQuZGVmYXVsdChmaXRfc3VyZywgbGV2ZWwgPSAwLjk1KSkpCmBgYAoKIyMgTWV0YXN0YXNpcyBhdCBUaW1lIG9mIERpYWdub3NpcwpgYGB7cn0KIyBsaW1pdCB0byB0aG9zZSBjYXNlcyB3aGVyZSBkYXRhIGFib3V0IGV4cGFuc2lvbiBzdGF0dXMgaXMgYXZhaWxhYmxlICg+IEFnZSAzOSwgbm9uLWFtYmlndW91cyBzdGF0dXMgc3RhdGVzKQoKZml0X21ldHMgPC0gZ2xtKG1ldHNfYXRfZHhfRiB+IEFHRV9GICsgU0VYX0YgKyBSQUNFX0YgKyBJTkNPTUVfRiArIFVfUl9GICsKICAgICAgICAgICAgICAgICAgICAgIEZBQ0lMSVRZX1RZUEVfRiArIEZBQ0lMSVRZX0xPQ0FUSU9OX0YgKyBFRFVDQVRJT05fRiArIEVYUE5fR1JPVVAsCiAgIGRhdGEgPSBkYXRhKQoKc3VtbWFyeShmaXRfbWV0cykKCmV4cChjYmluZCgiT2RkcyByYXRpbyIgPSBjb2VmKGZpdF9tZXRzKSwgY29uZmludC5kZWZhdWx0KGZpdF9zdXJnLCBsZXZlbCA9IDAuOTUpKSkKYGBgCgojU2FtZSBidXQgZm9yIEJyZWFzdAoKYGBge3J9CnByaW1fc2l0ZV90ZXh0IDwtIGRhdGFfZnJhbWUoUFJJTUFSWV9TSVRFID0gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMoI2JyZWFzdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDNTAwIiwgIkM1MDEiLCAiQzUwMiIsIkM1MDMiLCJDNTA0IiwiQzUwNSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDNTA2IiwiQzUwOCIsIkM1MDkiKSwKClNJVEVfVEVYVCA9IGMoCiNicmVhc3QKIkM1MC4wIE5pcHBsZSIsCiJDNTAuMSBDZW50cmFsIHBvcnRpb24gb2YgYnJlYXN0IiwKIkM1MC4yIFVwcGVyLWlubmVyIHF1YWRyYW50IGJyZWFzdCIsCiJDNTAuMyBMb3dlci1pbm5lciBxdWFkcmFudCBicmVhc3QiLAoiQzUwLjQgVXBwZXItb3V0ZXIgcXVhZHJhbnQgYnJlYXN0IiwKIkM1MC41IExvd2VyLW91dGVyIHF1YWRyYW50IiwKIkM1MC42IEF4aWxsYXJ5IHRhaWwgb2YgYnJlYXN0IiwgCiJDNTAuOCBPdmVybGFwcGluZyBsZXNpb24gb2YgYnJlYXN0IiwKIkM1MC45IEJyZWFzdCBOT1MiKSkKCgpkYXQgPC0gbWVyZ2UoZGF0LCBwcmltX3NpdGVfdGV4dCwgYnkgPSAiUFJJTUFSWV9TSVRFIiwgYWxsLnggPSBUUlVFKSAKIApybShwcmltX3NpdGVfdGV4dCkKCiMgY29udmVydCBudW1lcmljIHZhcmlhYmxlcyBmcm9tIGNoYXJhY3RlciBjbGFzcyB0byBudW1lcmljIGNsYXNzCm51bV92YXJzIDwtIGMoIkFHRSIsICJDUk9XRkxZIiwgIlRVTU9SX1NJWkUiLCAiRFhfU1RBR0lOR19QUk9DX0RBWVMiLCAiRFhfUlhfU1RBUlRFRF9EQVlTIiwgIkRYX1NVUkdfU1RBUlRFRF9EQVlTIiwKICAgICAgICAgICAgICAiRFhfREVGU1VSR19TVEFSVEVEX0RBWVMiLCAiU1VSR19ESVNDSEFSR0VfREFZUyIsICJEWF9SQURfU1RBUlRFRF9EQVlTIiwgICJSQURfUkVHSU9OQUxfRE9TRV9DR1kiLAogICAgICAgICAgICAgICJSQURfQk9PU1RfRE9TRV9DR1kiLCAiUkFEX0VMQVBTRURfUlhfREFZUyIsICJEWF9TWVNURU1JQ19TVEFSVEVEX0RBWVMiLCAiRFhfQ0hFTU9fU1RBUlRFRF9EQVlTIiwgCiAgICAgICAgICAgICAgIkRYX0hPUk1PTkVfU1RBUlRFRF9EQVlTIiwgIkRYX09USEVSX1NUQVJURURfREFZUyIsICJEWF9MQVNUQ09OVEFDVF9ERUFUSF9NT05USFMiLAogICAgICAgICAgICAgICJSQURfTlVNX1RSRUFUX1ZPTCIpCgpkYXRbbnVtX3ZhcnNdIDwtIGxhcHBseShkYXRbbnVtX3ZhcnNdLCBhcy5udW1lcmljKQoKCiMgY29udmVydCBmYWN0b3IgdmFyaWFibGVzIGZyb20gY2hhcmFjdGVyIGNsYXNzIHRvIGZhY3RvciBjbGFzcwp2YXJzIDwtIG5hbWVzKGRhdCkKZmFjdF92YXJzIDwtIHZhcnNbISh2YXJzICVpbiUgbnVtX3ZhcnMpXSAjIGJhc2ljYWxseSBhbGwgb2YgdGhlIG5vbi1udW1lcmljcwoKZGF0W2ZhY3RfdmFyc10gPC0gbGFwcGx5KGRhdFtmYWN0X3ZhcnNdLCBhcy5jaGFyYWN0ZXIpCmRhdFtmYWN0X3ZhcnNdIDwtIGxhcHBseShkYXRbZmFjdF92YXJzXSwgYXMuZmFjdG9yKQoKZGF0IDwtIGRhdCAlPiUKICAgICAgICBtdXRhdGUoRkFDSUxJVFlfVFlQRV9GID0gZmN0X3JlY29kZShGQUNJTElUWV9UWVBFX0NELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb21tdW5pdHkgQ2FuY2VyIFByb2dyYW0iID0gIjEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb21wcmVoZW5zaXZlIENvbW0gQ2EgUHJvZ3JhbSIgPSAiMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFjYWRlbWljL1Jlc2VhcmNoIFByb2dyYW0iID0gIjMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnRlZ3JhdGVkIE5ldHdvcmsgQ2EgUHJvZ3JhbSIgPSAiNCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk90aGVyIiA9ICI5IikpICU+JQogICAgICAgIG11dGF0ZShGQUNJTElUWV9MT0NBVElPTl9GID0gZmN0X3JlY29kZShGQUNJTElUWV9MT0NBVElPTl9DRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTmV3IEVuZ2xhbmQiID0gIjEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNaWRkbGUgQXRsYW50aWMiID0gIjIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTb3V0aCBBdGxhbnRpYyIgPSAiMyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVhc3QgTm9ydGggQ2VudHJhbCIgPSAiNCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVhc3QgU291dGggQ2VudHJhbCIgPSAiNSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIldlc3QgTm9ydGggQ2VudHJhbCIgPSAiNiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIldlc3QgU291dGggQ2VudHJhbCIgPSAiNyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vdW50YWluIiA9ICI4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUGFjaWZpYyIgPSAiOSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm91dCBvZiBVUyIgPSAiMCIpKSAlPiUKICAgICAgICBtdXRhdGUoRkFDSUxJVFlfR0VPR1JBUEhZID0gZmN0X2NvbGxhcHNlKEZBQ0lMSVRZX0xPQ0FUSU9OX0NELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vcnRoZWFzdCIgPSBjKCIxIiwgIjIiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTb3V0aCIgPSBjKCIzIiwgIjciKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNaWR3ZXN0IiA9IGMoIjQiLCAiNSIsICI2IiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiV2VzdCIgPSBjKCI4IiwgIjkiKSkpICU+JQogICAgICAgIG11dGF0ZShBR0VfRiA9IGN1dChBR0UsIGMoMCwgNTQsIDY0LCA3NCwgMTAwKSkpICU+JQogICAgICAgIG11dGF0ZShBR0VfNDAgPSBjdXQoQUdFLCBjKDAsIDQwLCAxMDApKSkgJT4lCiAgICAgICAgbXV0YXRlKFNFWF9GID0gZmN0X3JlY29kZShTRVgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1hbGUiID0gIjEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGZW1hbGUiID0gIjIiKSkgJT4lCiAgICAgICAgbXV0YXRlKFJBQ0VfRiA9IGZjdF9jb2xsYXBzZShSQUNFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJXaGl0ZSIgPSBjKCIwMSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCbGFjayIgPSBjKCIwMiIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBc2lhbiIgPSBjKCIwNCIsICIwNSIsICIwNiIsICIwNyIsICIwOCIsICIxMCIsICIxMSIsICIxMiIsICIxMyIsICIxNCIsICIxNSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjE2IiwgIjE3IiwgIjIwIiwgIjIxIiwgIjIyIiwgIjI1IiwgIjI2IiwgIjI3IiwgIjI4IiwgIjMwIiwgIjMxIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMzIiLCAiOTYiLCAiOTciKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT3RoZXIvVW5rIiA9IGMoIjAzIiwgIjk4IiwgIjk5IikpKSAlPiUKICAgICAgICBtdXRhdGUoSElTUEFOSUMgPSBmY3RfY29sbGFwc2UoU1BBTklTSF9ISVNQQU5JQ19PUklHSU4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJZZXMiID0gYygiMSIsICIyIiwgIjMiLCAiNCIsICI1IiwgIjYiLCAiNyIsICI4IiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJObyIgPSBjKCIwIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVbmtub3duIiA9IGMoIjkiKSkpICU+JQogICAgICAgIG11dGF0ZShJTlNVUkFOQ0VfRiA9IGZjdF9yZWNvZGUoSU5TVVJBTkNFX1NUQVRVUywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm9uZSIgPSAiMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlByaXZhdGUiID0gIjEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNZWRpY2FpZCIgPSAiMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1lZGljYXJlIiA9ICIzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT3RoZXIgR292ZXJubWVudCIgPSAiNCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVua25vd24iID0gIjkiKSkgJT4lCiAgICAgICAgbXV0YXRlKElOU1VSQU5DRV9GID0gZmN0X3JlbGV2ZWwoSU5TVVJBTkNFX0YsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlByaXZhdGUiKSkgJT4lCiAgICAgICAgbXV0YXRlKElOQ09NRV9GID0gZmN0X3JlY29kZShNRURfSU5DX1FVQVJfMTIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkxlc3MgdGhhbiAkMzgsMDAwIiA9ICIxIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJDM4LDAwMCAtICQ0Nyw5OTkiID0gIjIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIkNDgsMDAwIC0gJDYyLDk5OSIgPSAiMyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiQ2MywwMDAgKyIgPSAiNCIpKSAlPiUKICAgICAgICBtdXRhdGUoRURVQ0FUSU9OX0YgPSBmY3RfcmVjb2RlKE5PX0hTRF9RVUFSXzEyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjIxJSBvciBtb3JlIiA9ICIxIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIxMyAtIDIwLjklIiA9ICIyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI3IC0gMTIuOSUiID0gIjMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkxlc3MgdGhhbiA3JSIgPSAiNCIpKSAlPiUKICAgICAgICBtdXRhdGUoVV9SX0YgPSBmY3RfY29sbGFwc2UoVVJfQ0RfMTMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNZXRybyIgPSBjKCIxIiwgIjIiLCAiMyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVXJiYW4iID0gYygiNCIsICI1IiwgIjYiLCAiNyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUnVyYWwiID0gYygiOCIsICI5IikpKSAlPiUKICAgICAgICBtdXRhdGUoQ0xBU1NfT0ZfQ0FTRV9GID0gZmN0X2NvbGxhcHNlKENMQVNTX09GX0NBU0UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxfUGFydF9QcmltID0gYygiMTAiLCAiMTEiLCAiMTIiLCAiMTMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjE0IiwgIjIwIiwgIjIxIiwgIjIyIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdGhlcl9GYWNpbGl0eSA9IGMoIjAwIikpKSAlPiUKICAgICAgICBtdXRhdGUoR1JBREVfRiA9IGZjdF9yZWNvZGUoR1JBREUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiR3IgSTogV2VsbCBEaWZmIiA9ICIxIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJHciBJSTogTW9kIERpZmYiID0gIjIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkdyIElJSTogUG9vciBEaWZmIiA9ICIzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJHciBJVjogVW5kaWZmL0FuYXBsYXN0aWMiID0gIjQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5BL1Vua293biIgPSAiOSIpKSAlPiUKICAgICAgICBtdXRhdGUoSElTVE9MT0dZX0YgPSBmY3RfaW5mcmVxKEhJU1RPTE9HWSkpICU+JQogICAgICAgIG11dGF0ZShISVNUT0xPR1lfRiA9IGZhY3RvcihISVNUT0xPR1lfRikpICU+JQogICAgICAgIG11dGF0ZShISVNUT0xPR1lfRl9MSU0gPSBmY3RfbHVtcChISVNUT0xPR1lfRiwgcHJvcCA9IDAuMDUpKSAlPiUKICAgICAgICBtdXRhdGUoVE5NX0NMSU5fVCA9IGZjdF9yZWNvZGUoVE5NX0NMSU5fVCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5fQSIgPSAiODgiKSkgJT4lCiAgICAgICAgbXV0YXRlKFROTV9DTElOX1QgPSBmY3RfcmVsZXZlbChUTk1fQ0xJTl9ULAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjEiKSkgJT4lCiAgICAgICAgbXV0YXRlKFROTV9DTElOX04gPSBmY3RfcmVjb2RlKFROTV9DTElOX04sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOX0EiID0gIjg4IikpICU+JQogICAgICAgIG11dGF0ZShUTk1fQ0xJTl9NID0gZmN0X3JlY29kZShUTk1fQ0xJTl9NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTl9BIiA9ICI4OCIpKSAlPiUKICAgICAgICBtdXRhdGUoVE5NX1BBVEhfVCA9IGZjdF9yZWNvZGUoVE5NX1BBVEhfVCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5fQSIgPSAiODgiKSkgJT4lCiAgICAgICAgbXV0YXRlKFROTV9QQVRIX1QgPSBmY3RfcmVsZXZlbChUTk1fUEFUSF9ULAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjEiKSkgJT4lCiAgICAgICAgbXV0YXRlKFROTV9QQVRIX04gPSBmY3RfcmVjb2RlKFROTV9QQVRIX04sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOX0EiID0gIjg4IikpICU+JQogICAgICAgIG11dGF0ZShUTk1fUEFUSF9NID0gZmN0X3JlY29kZShUTk1fUEFUSF9NLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTl9BIiA9ICI4OCIpKSAlPiUKICAgICAgICBtdXRhdGUoVE5NX0NMSU5fU1RBR0VfR1JPVVAgPSBmY3RfcmVjb2RlKFROTV9DTElOX1NUQUdFX0dST1VQLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTl9BIiA9ICI4OCIpKSAlPiUKICAgICAgICBtdXRhdGUoVE5NX1BBVEhfU1RBR0VfR1JPVVAgPSBmY3RfcmVjb2RlKFROTV9QQVRIX1NUQUdFX0dST1VQLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTl9BIiA9ICI4OCIpKSAlPiUKICAgICAgICBtdXRhdGUoTUFSR0lOUyA9IGZjdF9yZWNvZGUoUlhfU1VNTV9TVVJHSUNBTF9NQVJHSU5TLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm8gUmVzaWR1YWwiID0gIjAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmVzaWR1YWwsIE5PUyIgPSAiMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNaWNyb3Njb3BpYyBSZXNpZCIgPSAiMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNYWNyb3Njb3BpYyBSZXNpZCIgPSAiMyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOb3QgZXZhbHVhYmxlIiA9ICI3IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vIHN1cmciID0gIjgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVW5rbm93biIgPSAiOSIpKSAlPiUKICAgICAgICBtdXRhdGUoTUFSR0lOU19ZTiA9IGZjdF9jb2xsYXBzZShSWF9TVU1NX1NVUkdJQ0FMX01BUkdJTlMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlllcyIgPSBjKCIxIiwgIjIiLCAiMyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJObyIgPSBjKCIwIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vIHN1cmcvVW5rL05BIiA9IGMoIjciLCAiOCIsICI5IikpKSAlPiUKICAgICAgICBtdXRhdGUoUkVBRE1fSE9TUF8zMF9EQVlTX0YgPSBmY3RfcmVjb2RlKFJFQURNX0hPU1BfMzBfREFZUywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOb19TdXJnX29yX05vX1JlYWRtaXQiID0gIjAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVucGxhbl9SZWFkbWl0X1NhbWUiID0gIjEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBsYW5fUmVhZG1pdF9TYW1lIiA9ICIyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQbGFuVW5wbGFuX1NhbWUiID0gIjMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVua25vd24iID0gIjQiKSkgJT4lCiAgICAgICAgbXV0YXRlKFJYX1NVTU1fUkFESUFUSU9OX0YgPSBmY3RfcmVjb2RlKFJYX1NVTU1fUkFESUFUSU9OLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm9uZSIgPSAiMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCZWFtIFJhZGlhdGlvbiIgPSAiMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSYWRpb2FjdGl2ZSBJbXBsYW50cyIgPSAiMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSYWRpb2lzb3RvcGVzIiA9ICIzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJlYW0gKyBJbXAgb3IgSXNvdG9wZXMiID0gIjQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmFkaWF0aW9uLCBOT1MiID0gIjUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVW5rbm93biIgPSAiOSIpKSAlPiUKICAgICAgICBtdXRhdGUoUFVGXzMwX0RBWV9NT1JUX0NEX0YgPSBmY3RfcmVjb2RlKFBVRl8zMF9EQVlfTU9SVF9DRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBbGl2ZV8zMCIgPSAiMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRGVhZF8zMCIgPSAiMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVW5rbm93biIgPSAiOSIpKSAlPiUKICAgICAgICBtdXRhdGUoUFVGXzkwX0RBWV9NT1JUX0NEX0YgPSBmY3RfcmVjb2RlKFBVRl85MF9EQVlfTU9SVF9DRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBbGl2ZV85MCIgPSAiMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRGVhZF85MCIgPSAiMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVW5rbm93biIgPSAiOSIpKSAlPiUKICAgICAgICBtdXRhdGUoTFlNUEhfVkFTQ1VMQVJfSU5WQVNJT05fRiA9IGZjdF9yZWNvZGUoTFlNUEhfVkFTQ1VMQVJfSU5WQVNJT04sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOZWdfTHltcGhWYXNjX0ludiIgPSAiMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQb3NfTHVtcGhWYXNjX0ludiIgPSAiMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOX0EiID0gIjgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVW5rbm93biIgPSAiOSIpKSAlPiUKICAgICAgICBtdXRhdGUoUlhfSE9TUF9TVVJHX0FQUFJfMjAxMF9GID0gZmN0X3JlY29kZShSWF9IT1NQX1NVUkdfQVBQUl8yMDEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOb19TdXJnIiA9ICIwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUm9ib3RfQXNzaXN0IiA9ICIxIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUm9ib3RfdG9fT3BlbiIgPSAiMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVuZG9fTGFwIiA9ICIzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRW5kb19MYXBfdG9fT3BlbiIgPSAiNCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk9wZW5fVW5rbm93biIgPSAiNSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVua25vd24iID0gIjkiKSkgJT4lCiAgICAgICAgbXV0YXRlKEFsbCA9ICJBbGwiKSAlPiUKICAgICAgICBtdXRhdGUoQWxsID0gZmFjdG9yKEFsbCkpICU+JQogICAgICAgIG11dGF0ZShSRUFTT05fRk9SX05PX1NVUkdFUllfRiA9IGZjdF9yZWNvZGUoUkVBU09OX0ZPUl9OT19TVVJHRVJZLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN1cmcgcGVyZm9ybWVkIiA9ICIwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdXJnIG5vdCByZWNvbW1lbmRlZCIgPSAiMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm8gc3VyZyBkdWUgdG8gcHQgZmFjdG9ycyIgPSAiMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm8gc3VyZywgcHQgZGllZCIgPSAiNSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3VyZyByZWMsIG5vdCBkb25lIiA9ICI2IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdXJnIHJlYywgcHQgcmVmdXNlZCIgPSAiNyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3VyZyByZWMsIHVuayBpZiBkb25lIiA9ICI4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVbmtub3duIiA9ICI5IikpICU+JQogICAgICAgIG11dGF0ZShTVVJHRVJZX1lOID0gaWZlbHNlKFJFQVNPTl9GT1JfTk9fU1VSR0VSWSA9PSAiMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlllcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFJFQVNPTl9GT1JfTk9fU1VSR0VSWSA9PSAiOSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVa24iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm8iKSkpICU+JQogICAgICAgIG11dGF0ZShTVVJHX1RGID0gY2FzZV93aGVuKFNVUkdFUllfWU4gPT0gIlllcyIgfiBUUlVFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNVUkdFUllfWU4gPT0gIk5vIiB+IEZBTFNFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUgfiBOQSkpICAlPiUKICAgICAgICBtdXRhdGUoUkVBU09OX0ZPUl9OT19SQURJQVRJT05fRiA9IGZjdF9yZWNvZGUoUkVBU09OX0ZPUl9OT19SQURJQVRJT04sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmFkIHBlcmZvcm1lZCIgPSAiMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmFkIG5vdCByZWNvbW1lbmRlZCIgPSAiMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm8gUmFkIGR1ZSB0byBwdCBmYWN0b3JzIiA9ICIyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJObyBSYWQsIHB0IGRpZWQiID0gIjUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJhZCByZWMsIG5vdCBkb25lIiA9ICI2IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSYWQgcmVjLCBwdCByZWZ1c2VkIiA9ICI3IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSYWQgcmVjLCB1bmsgaWYgZG9uZSIgPSAiOCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVW5rbm93biIgPSAiOSIpKSAlPiUKICAgICAgICBtdXRhdGUoUkFESUFUSU9OX1lOID0gaWZlbHNlKFJFQVNPTl9GT1JfTk9fUkFESUFUSU9OID09ICIwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiWWVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoUkVBU09OX0ZPUl9OT19SQURJQVRJT04gPT0gIjkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vIikpKSAlPiUKICAgICAgICBtdXRhdGUoU1VSR1JBRF9TRVFfRiA9IGZjdF9yZWNvZGUoUlhfU1VNTV9TVVJHUkFEX1NFUSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vbmUgb3IgU3VyZyBvciBSYWQiID0gIjAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmFkIGJlZm9yZSBTdXJnIiA9ICIyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN1cmcgYmVmb3JlIFJhZCIgPSAiMyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSYWQgYmVmb3JlIGFuZCBhZnRlciBTdXJnIiA9ICI0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkludHJhb3AgUmFkIiA9ICI1IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkludHJhb3AgUmFkIHBsdXMgb3RoZXIiID0gIjYiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVW5rbm93biIgPSAiOSIpKSAlPiUKICAgICAgICBtdXRhdGUoU1VSR19SQURfU0VRID0gaWZlbHNlKFNVUkdFUllfWU4gPT0gIlllcyIgJiBSWF9TVU1NX1NVUkdSQURfU0VRID09ICIwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdXJnIEFsb25lIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShSQURJQVRJT05fWU4gPT0gIlllcyIgJiBSWF9TVU1NX1NVUkdSQURfU0VRID09ICIwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmFkIEFsb25lIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoU1VSR0VSWV9ZTiA9PSAiTm8iICYgUkFESUFUSU9OX1lOID09ICJObyIgJiBSWF9TVU1NX1NVUkdSQURfU0VRID09ICIwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vIFRyZWF0bWVudCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShSWF9TVU1NX1NVUkdSQURfU0VRID09ICIyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSYWQgdGhlbiBTdXJnIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShSWF9TVU1NX1NVUkdSQURfU0VRID09ICIzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3VyZyB0aGVuIFJhZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFJYX1NVTU1fU1VSR1JBRF9TRVEgPT0gIjQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmFkIGJlZm9yZSBhbmQgYWZ0ZXIgU3VyZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPdGhlciIpKSkpKSkpICU+JQogICAgICAgIG11dGF0ZShTVVJHX1JBRF9TRVEgPSBmY3RfcmVsZXZlbChTVVJHX1JBRF9TRVEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdXJnIEFsb25lIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN1cmcgdGhlbiBSYWQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmFkIEFsb25lIikpICU+JQogICAgICAgIG11dGF0ZShDSEVNT19ZTiA9IGZjdF9jb2xsYXBzZShSWF9TVU1NX0NIRU1PLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm8iID0gYygiMDAiLCAiODIiLCAiODUiLCAiODYiLCAiODciKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlllcyIgPSBjKCIwMSIsICIwMiIsICIwMyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVWtuIiA9IGMoIjg4IiwgIjk5IikpKSAlPiUKICAgICAgICBtdXRhdGUoU1VSR19SQURfU0VRX0MgPSBpZmVsc2UoU1VSR0VSWV9ZTiA9PSAiWWVzIiAmIFJYX1NVTU1fU1VSR1JBRF9TRVEgPT0gIjAiICYgQ0hFTU9fWU4gPT0gIk5vIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdXJnLCBObyByYWQsIE5vIENoZW1vIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShSQURJQVRJT05fWU4gPT0gIlllcyIgJiBSWF9TVU1NX1NVUkdSQURfU0VRID09ICIwIiAmIENIRU1PX1lOID09ICJObyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJhZCwgTm8gU3VyZywgTm8gQ2hlbW8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShTVVJHRVJZX1lOID09ICJObyIgJiBSQURJQVRJT05fWU4gPT0gIk5vIiAmIFJYX1NVTU1fU1VSR1JBRF9TRVEgPT0gIjAiICYgQ0hFTU9fWU4gPT0gIk5vIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vIFN1cmcsIE5vIFJhZCwgTm8gQ2hlbW8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoUlhfU1VNTV9TVVJHUkFEX1NFUSA9PSAiMiIgJiBDSEVNT19ZTiA9PSAiTm8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJhZCB0aGVuIFN1cmcsIE5vIENoZW1vIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShSWF9TVU1NX1NVUkdSQURfU0VRID09ICIzIiAmIENIRU1PX1lOID09ICJObyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN1cmcgdGhlbiBSYWQsIE5vIENoZW1vIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoUlhfU1VNTV9TVVJHUkFEX1NFUSA9PSAiNCIgJiBDSEVNT19ZTiA9PSAiTm8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmFkIGJlZm9yZSBhbmQgYWZ0ZXIgU3VyZywgTm8gQ2hlbW8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShTVVJHRVJZX1lOID09ICJZZXMiICYgUlhfU1VNTV9TVVJHUkFEX1NFUSA9PSAiMCIgJiBDSEVNT19ZTiA9PSAiWWVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN1cmcsIE5vIHJhZCwgWWVzIENoZW1vIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFJBRElBVElPTl9ZTiA9PSAiWWVzIiAmIFJYX1NVTU1fU1VSR1JBRF9TRVEgPT0gIjAiICYgQ0hFTU9fWU4gPT0gIlllcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmFkLCBObyBTdXJnLCBZZXMgQ2hlbW8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFNVUkdFUllfWU4gPT0gIk5vIiAmIFJBRElBVElPTl9ZTiA9PSAiTm8iICYgUlhfU1VNTV9TVVJHUkFEX1NFUSA9PSAiMCIgJiBDSEVNT19ZTiA9PSAiWWVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm8gU3VyZywgTm8gUmFkLCBZZXMgQ2hlbW8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShSWF9TVU1NX1NVUkdSQURfU0VRID09ICIyIiAmIENIRU1PX1lOID09ICJZZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmFkIHRoZW4gU3VyZywgWWVzIENoZW1vIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFJYX1NVTU1fU1VSR1JBRF9TRVEgPT0gIjMiICYgQ0hFTU9fWU4gPT0gIlllcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3VyZyB0aGVuIFJhZCwgWWVzIENoZW1vIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShSWF9TVU1NX1NVUkdSQURfU0VRID09ICI0IiAmIENIRU1PX1lOID09ICJZZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSYWQgYmVmb3JlIGFuZCBhZnRlciBTdXJnLCBZZXMgQ2hlbW8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPdGhlciIpKSkpKSkpKSkpKSkpICU+JQogICAgICAgIG11dGF0ZShTVVJHX1JBRF9TRVFfQyA9IGZjdF9pbmZyZXEoU1VSR19SQURfU0VRX0MpKSAlPiUKICAgICAgICBtdXRhdGUoVF9TSVpFID0gYXMubnVtZXJpYyhUVU1PUl9TSVpFKSkgJT4lCiAgICAgICAgbXV0YXRlKFRfU0laRSA9IGlmZWxzZShUX1NJWkUgPT0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm8gVHVtb3IiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShUX1NJWkUgPiAwICYgVF9TSVpFIDwgMTAgfCBUX1NJWkUgPT0gOTkxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPCAxIGNtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFRfU0laRSA+PSAxMCAmIFRfU0laRSA8IDIwIHwgVF9TSVpFID09IDk5MiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIxLTIgY20iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFRfU0laRSA+PSAyMCAmIFRfU0laRSA8IDMwIHwgVF9TSVpFID09IDk5MywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMi0zIGNtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoVF9TSVpFID49IDMwICYgVF9TSVpFIDwgNDAgfCBUX1NJWkUgPT0gOTk0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMy00IGNtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFRfU0laRSA+PSA0MCAmIFRfU0laRSA8IDUwIHwgVF9TSVpFID09IDk5NSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI0LTUgY20iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKFRfU0laRSA+PSA1MCAmIFRfU0laRSA8IDYwIHwgVF9TSVpFID09IDk5NiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiNS02IGNtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoVF9TSVpFID49IDYwICYgVF9TSVpFIDw9IDk4NyB8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVF9TSVpFID09IDk4MCB8IFRfU0laRSA9PSA5ODkgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRfU0laRSA9PSA5OTcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIj42IGNtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoVF9TSVpFID09IDk4OCB8IFRfU0laRSA9PSA5OTksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOQV91bmsiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTWljcm9zY29waWMgZm9jdXMiKSkpKSkpKSkpKSAlPiUKICAgICAgICBtdXRhdGUoVF9TSVpFID0gZmFjdG9yKFRfU0laRSkpICU+JQogICAgICAgIG11dGF0ZShUX1NJWkUgPSBmY3RfcmVsZXZlbChUX1NJWkUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm8gVHVtb3IiLCAiTWljcm9zY29waWMgZm9jdXMiLCAiPCAxIGNtIiwgIjEtMiBjbSIsICIyLTMgY20iLCAiMy00IGNtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjQtNSBjbSIsICI1LTYgY20iLCAiPjYgY20iLCAiTkFfdW5rIikpICU+JQogICAgICAgIG11dGF0ZShtZXRzX2F0X2R4ID0gY2FzZV93aGVuKENTX01FVFNfRFhfTFVORyA9PSAiMSIgfiAiTHVuZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NfTUVUU19EWF9CT05FID09ICIxIiB+ICJCb25lIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU19NRVRTX0RYX0JSQUlOID09ICIxIiB+ICJCcmFpbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NfTUVUU19EWF9MSVZFUiA9PSAiMSIgfiAiTGl2ZXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUgfiAiTm9uZS9PdGhlci9VbmsvTkEiKSkgJT4lCiAgICAgICAgbXV0YXRlKE1FRElDQUlEX0VYUE5fQ09ERSA9IGZjdF9yZWNvZGUoTUVESUNBSURfRVhQTl9DT0RFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOb24tRXhwYW5zaW9uIFN0YXRlIiA9ICIwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSmFuIDIwMTQgRXhwYW5zaW9uIFN0YXRlcyIgPSAiMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVhcmx5IEV4cGFuc2lvbiBTdGF0ZXMgKDIwMTAtMTMpIiA9ICIyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTGF0ZSBFeHBhbnNpb24gU3RhdGVzICg+IEphbiAyMDE0KSIgPSAiMyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN1cHByZXNzZWQgZm9yIEFnZXMgMCAtIDM5IiA9ICI5IikpICAlPiUKICAgICAgICBtdXRhdGUoRVhQTl9HUk9VUCA9ICBjYXNlX3doZW4oTUVESUNBSURfRVhQTl9DT0RFICAlaW4lIGMoIkphbiAyMDE0IEV4cGFuc2lvbiBTdGF0ZXMiKSAmIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlFQVJfT0ZfRElBR05PU0lTICVpbiUgYygiMjAxNCIsICIyMDE1IikgfiAiUG9zdC1FeHBhbnNpb24iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVESUNBSURfRVhQTl9DT0RFICAlaW4lIGMoIkphbiAyMDE0IEV4cGFuc2lvbiBTdGF0ZXMiKSAmIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlFQVJfT0ZfRElBR05PU0lTICVpbiUgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMoIjIwMDQiLCAiMjAwNSIsICIyMDA2IiwgIjIwMDciLCAiMjAwOCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIyMDA5IiwgIjIwMTAiLCAiMjAxMSIsICIyMDEyIiwgIjIwMTMiKSB+ICJQcmUtRXhwYW5zaW9uIiwKICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1FRElDQUlEX0VYUE5fQ09ERSAgJWluJSBjKCJFYXJseSBFeHBhbnNpb24gU3RhdGVzICgyMDEwLTEzKSIpICYgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWUVBUl9PRl9ESUFHTk9TSVMgJWluJSBjKCIyMDEwIiwgIjIwMTEiLCAiMjAxMiIsICIyMDEzIiwgIjIwMTQiLCAiMjAxNSIpIH4gIlBvc3QtRXhwYW5zaW9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNRURJQ0FJRF9FWFBOX0NPREUgICVpbiUgYygiRWFybHkgRXhwYW5zaW9uIFN0YXRlcyAoMjAxMC0xMykiKSAmIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlFQVJfT0ZfRElBR05PU0lTICVpbiUgYygiMjAwNCIsICIyMDA1IiwgIjIwMDYiLCAiMjAwNyIsICIyMDA4IiwgIjIwMDkiKSB+ICJQcmUtRXhwYW5zaW9uIiwKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1FRElDQUlEX0VYUE5fQ09ERSAlaW4lIGMoIk5vbi1FeHBhbnNpb24gU3RhdGUiKSB+ICJQcmUtRXhwYW5zaW9uIiwKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1FRElDQUlEX0VYUE5fQ09ERSAlaW4lIGMoIkxhdGUgRXhwYW5zaW9uIFN0YXRlcyAoPiBKYW4gMjAxNCkiKSB+ICJQcmUtRXhwYW5zaW9uIiwKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVESUNBSURfRVhQTl9DT0RFICVpbiUgYygiTGF0ZSBFeHBhbnNpb24gU3RhdGVzICg+IEphbiAyMDE0KSIpICYgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZRUFSX09GX0RJQUdOT1NJUyAlaW4lIGMoIjIwMTQiLCAiMjAxNSIpIH4gIkV4Y2x1ZGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVESUNBSURfRVhQTl9DT0RFID09ICJTdXBwcmVzc2VkIGZvciBBZ2VzIDAgLSAzOSIgfiAiRXhjbHVkZSIpKSAlPiUKICAKICBtdXRhdGUocHJlXzIwMTQgPSBZRUFSX09GX0RJQUdOT1NJUyAlaW4lIGMoIjIwMDQiLCAiMjAwNSIsICIyMDA2IiwgIjIwMDciLCAiMjAwOCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIyMDA5IiwgIjIwMTAiLCAiMjAxMSIsICIyMDEyIiwgIjIwMTMiKSkgJT4lCiAgCiAgbXV0YXRlKG1ldHNfYXRfZHhfRiA9IGlmZWxzZShtZXRzX2F0X2R4ID09ICJOb25lL090aGVyL1Vuay9OQSIsIEZBTFNFLCBUUlVFKSkgJT4lIAogIAogIG11dGF0ZShUeF9ZTiA9IGlmZWxzZShTVVJHX1JBRF9TRVEgPT0gIk5vIFRyZWF0bWVudCIgJiBDSEVNT19ZTiA9PSAiTm8iLCBGQUxTRSwgCiAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShDSEVNT19ZTiA9PSAiVWtuIiwgTkEsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSkpKQoKZmFjdF92YXJzXzIgPC0gYygiRkFDSUxJVFlfVFlQRV9GIiwgIkZBQ0lMSVRZX0xPQ0FUSU9OX0YiLCAiQUdFX0YiLCAiU0VYX0YiLCAiUkFDRV9GIiwKICAgICAgICAgICAgICAgICAiSElTUEFOSUMiLCAiSU5TVVJBTkNFX0YiLCAiSU5DT01FX0YiLCAiRURVQ0FUSU9OX0YiLCAiVV9SX0YiLAogICAgICAgICAgICAgICAgICJDRENDX1RPVEFMX0JFU1QiLCAiQ0xBU1NfT0ZfQ0FTRV9GIiwgIllFQVJfT0ZfRElBR05PU0lTIiwgIlBSSU1BUllfU0lURSIsICJISVNUT0xPR1kiLAogICAgICAgICAgICAgICAgICJCRUhBVklPUiIsICJHUkFERV9GIiwgIlROTV9DTElOX1QiLCAiVE5NX0NMSU5fTiIsICJUTk1fQ0xJTl9NIiwKICAgICAgICAgICAgICAgICAiVE5NX0NMSU5fU1RBR0VfR1JPVVAiLCAiVE5NX1BBVEhfVCIsICJUTk1fUEFUSF9OIiwgIlROTV9QQVRIX00iLCAiVE5NX1BBVEhfU1RBR0VfR1JPVVAiLAogICAgICAgICAgICAgICAgICJNQVJHSU5TIiwgIlJFQURNX0hPU1BfMzBfREFZU19GIiwgIlJYX1NVTU1fUkFESUFUSU9OX0YiLCAiUFVGXzMwX0RBWV9NT1JUX0NEX0YiLAogICAgICAgICAgICAgICAgICJQVUZfOTBfREFZX01PUlRfQ0RfRiIsICJMWU1QSF9WQVNDVUxBUl9JTlZBU0lPTl9GIiwgIlJYX0hPU1BfU1VSR19BUFBSXzIwMTBfRiIsICJtZXRzX2F0X2R4IikKCgpkYXQgPC0gZGF0ICU+JQogICAgICAgIG11dGF0ZV9hdChmYWN0X3ZhcnNfMiwgZnVucyhmYWN0b3IoLikpKQoKYGBgCgoKIyBFeHRyYWN0IGRhdGEgb2YgaW50ZXJlc3QgCgpgYGB7cn0KIyBNUEQKc2l0ZV9jb2RlIDwtIGMoCiAjYnJlYXN0CiAgIkM1MDAiLCAiQzUwMSIsICJDNTAyIiwiQzUwMyIsIkM1MDQiLCJDNTA1IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkM1MDYiLCJDNTA4IiwiQzUwOSIpCgpoaXN0b19jb2RlIDwtIGMoIjg1NDAiKQpiZWhhdmlvcl9jb2RlIDwtIGMoIjMiKQoKZGF0YSA8LSBkYXQgJT4lCiAgICAgICAgZmlsdGVyKEJFSEFWSU9SICVpbiUgYmVoYXZpb3JfY29kZSkgJT4lCiAgICAgICAgZmlsdGVyKFBSSU1BUllfU0lURSAlaW4lIHNpdGVfY29kZSkgJT4lCiAgICAgICAgZmlsdGVyKEhJU1RPTE9HWSAlaW4lIGhpc3RvX2NvZGUpICU+JQojICAgICAgICBmaWx0ZXIoQUdFID49IDE4KSAlPiUKICAgICAgICBmaWx0ZXIoaXMubmEoUFVGX1ZJVEFMX1NUQVRVUykgPT0gRkFMU0UpICU+JQogICAgICAgIGZpbHRlcihpcy5uYShEWF9MQVNUQ09OVEFDVF9ERUFUSF9NT05USFMpID09IEZBTFNFKSAlPiUKICAgICAgICBmaWx0ZXIoU0VRVUVOQ0VfTlVNQkVSID09ICIwMCIpIAoKbm9fRXhjbHVkZXMgPC0gYXMuZGF0YS5mcmFtZShkYXRhICU+JSAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcihFWFBOX0dST1VQICE9ICJFeGNsdWRlIikgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJT4lIGRyb3BsZXZlbHMoKSkKCgojZmlsZV9wYXRoIDwtIGMoIi9Vc2Vycy9iZWFzdGF0bGlmZS9Hb29nbGUgRHJpdmUvUGVubi9SZXNlYXJjaC9CYXJiaWVyaS9OQ0RCIikKI3NhdmUoZGF0YSwKIyAgICAgIGZpbGUgPSBwYXN0ZTAoZmlsZV9wYXRoLCAiL2JyZWFzdF9kYXRhLlJkYSIpKQpgYGAKCmBgYHtyIGxvYWREYXRhMn0KI2xvYWQoIkVNUERfZGF0YS5SZGEiKQpgYGAKCgoKCkRhdGEgaW5jbHVkaW5nIHNraW4gdHVtb3JzIHdhcyBvYnRhaW5lZCBmcm9tIHRoZSBOQ0JEIG9uIE9jdG9iZXIgNywgMjAxOS4gQ2FzZXMgdGhhdCB3ZXJlIGluY2x1ZGVkIGluIHRoaXMgYW5hbHlzaXMgd2VyZSB0aG9zZSB3aXRoOgoKMS4gU2l0ZSBjb2RlczogYHIgc2l0ZV9jb2RlYAoyLiBIaXN0b2xvZ3kgY29kZXM6IGByIGhpc3RvX2NvZGVgCjMuIEJlaGF2aW9yIGNvZGVzOiBgciBiZWhhdmlvcl9jb2RlYAoKClBhdGllbnRzIHdlcmUgZXhjbHVkZWQgaWYgdGhleSBkaWRuJ3QgaGF2ZSB2YWx1ZXMgZm9yIGVpdGhlciBmb2xsb3cgdXAgb3Igdml0YWwgc3RhdHVzLgoKUGF0aWVudHMgd2VyZSBleGNsdWRlZCBpZiB0aGV5IGhhZCBzdXJnZXJ5IHRvIGEgZGlzdGFudCBzaXRlIHVzaW5nIGBSWF9TVU1NX1NVUkdfT1RIX1JFR0RJU2AuIFRoaXMgd2FzIGRvbmUgdG8gYXZvaWQgY29uZm91bmRpbmcgb2YgZGlmZmVyZW50IHN1cmdpY2FsIHByb2NlZHVyZXMuIFdlIGFyZSBvbmx5IGludGVyZXN0ZWQgaW4gc3VyZ2VyeSBhdCB0aGUgcHJpbWFyeSBzaXRlLiBUaGVzZSBkaXN0YW50IHNpdGUgc3VyZ2VyaWVzIHdlcmUgYmVpbmcgY291bnRlZCBpbiB0aGUgc3VyZ2VyeS9yYWRpYXRpb24gc2VxdWVuY2UgYW5kIHRodXMgdG8gc2ltcGxpZnkgYW5hbHlzaXMgdGhleSB3ZXJlIHJlbW92ZWQuIAoKYGBge3J9CgpkYXRhICU+JQogICAgICAgIENyZWF0ZVRhYmxlT25lKGRhdGEgPSAuLAogICAgICAgICAgICAgICAgICAgICB2YXJzID0gYygiUlhfU1VNTV9TVVJHX09USF9SRUdESVMiKSwKICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZU5BID0gVFJVRSkgJT4lCiAgICAgICAgcHJpbnQoLiwKICAgICAgICAgICAgICBzaG93QWxsTGV2ZWxzID0gVFJVRSkKCmRhdGEgPC0gZGF0YSAlPiUKICAgICAgICBmaWx0ZXIoUlhfU1VNTV9TVVJHX09USF9SRUdESVMgPT0gIjAiKSAKYGBgCgoKUmFjZSB3YXMgZ3JvdXBlZCBhcyB3aGl0ZSwgYmxhY2ssIGFzaWFuLCBvdGhlci91bmtub3duClN0YWdlIHdhcyBncm91cGVkIGludG8gMCwgSSwgSUksIElJSSwgSVYsIE5BX1Vua25vd24sIHN0YWdlIDAgd2FzIHJlbW92ZWQKV2hldGhlciBzdXJnZXJ5IHdhcyBwZXJmb3JtZWQgd2FzIGJhc2VkIG9uIHRoZSBgUkVBU09OX0ZPUl9OT19TVVJHRVJZYCB2YXJpYWJsZS4gVGhlIGBTVVJHRVJZX1lOYCB2YXJpYWJsZSB3YXMgY2xhc3NpZmllZCBhcyAnWWVzJywgJ05vJywgb3IgJ1Vua25vd24nLgoKCldoZXRoZXIgcmFkaWF0aW9uIHdhcyBwZXJmb3JtZWQgd2FzIGJhc2VkIG9uIHRoZSBgUkVBU09OX0ZPUl9OT19SQURJQVRJT05gIHZhcmlhYmxlLiBUaGUgYFJBRElBVElPTl9ZTmAgdmFyaWFibGUgd2FzIGNsYXNzaWZpZWQgYXMgJ1llcycsICdObycsIG9yICdVbmtub3duJy4KCgoKIyNUYWJsZSBvZiB2YXJpYWJsZXMgZm9yIGFsbCBjYXNlczoKCiNUYWJsZSBvZiB2YXJpYWJsZXMgZm9yIGFsbCBjYXNlczoKCmBgYHtyfQoKcF90YWJsZShkYXRhLAogICAgICAgIHZhcnMgPSBjKCJGQUNJTElUWV9UWVBFX0YiLCAiRkFDSUxJVFlfTE9DQVRJT05fRiIsICJGQUNJTElUWV9HRU9HUkFQSFkiLCAgIkFHRSIsICJBR0VfRiIsICJBR0VfNDAiLAogICAgICAgICAgICAgICAgICJTRVhfRiIsICJSQUNFX0YiLCAiSElTUEFOSUMiLCAiSU5TVVJBTkNFX0YiLCAKICAgICAgICAgICAgICAgICAiSU5DT01FX0YiLCAiRURVQ0FUSU9OX0YiLCAiVV9SX0YiLCAiQ1JPV0ZMWSIsICJDRENDX1RPVEFMX0JFU1QiLAogICAgICAgICAgICAgICAgICJTSVRFX1RFWFQueSIsICAiQkVIQVZJT1IiLCAiR1JBREVfRiIsCiAgICAgICAgICAgICAgICAgIkRYX1NUQUdJTkdfUFJPQ19EQVlTIiwgIlROTV9DTElOX1QiLCAiVE5NX0NMSU5fTiIsICJUTk1fQ0xJTl9NIiwKICAgICAgICAgICAgICAgICAiVE5NX0NMSU5fU1RBR0VfR1JPVVAiLCAiVE5NX1BBVEhfVCIsICJUTk1fUEFUSF9OIiwgIlROTV9QQVRIX00iLAogICAgICAgICAgICAgICAgICJUTk1fUEFUSF9TVEFHRV9HUk9VUCIsICJEWF9SWF9TVEFSVEVEX0RBWVMiLCAiRFhfU1VSR19TVEFSVEVEX0RBWVMiLAogICAgICAgICAgICAgICAgICJEWF9ERUZTVVJHX1NUQVJURURfREFZUyIsICJNQVJHSU5TIiwgIk1BUkdJTlNfWU4iLCAiU1VSR19ESVNDSEFSR0VfREFZUyIsCiAgICAgICAgICAgICAgICAgIlJFQURNX0hPU1BfMzBfREFZU19GIiwgIlJYX1NVTU1fUkFESUFUSU9OX0YiLCAiUFVGXzMwX0RBWV9NT1JUX0NEX0YiLAogICAgICAgICAgICAgICAgICJQVUZfOTBfREFZX01PUlRfQ0RfRiIsICJEWF9MQVNUQ09OVEFDVF9ERUFUSF9NT05USFMiLCAKICAgICAgICAgICAgICAgICAiTFlNUEhfVkFTQ1VMQVJfSU5WQVNJT05fRiIsICJSWF9IT1NQX1NVUkdfQVBQUl8yMDEwX0YiLCAiU1VSR19SQURfU0VRIiwKICAgICAgICAgICAgICAgICAiU1VSR19SQURfU0VRX0MiLCAiU1VSR0VSWV9ZTiIsICJSQURJQVRJT05fWU4iLCAiQ0hFTU9fWU4iLCAibWV0c19hdF9keCIsCiAgICAgICAgICAgICAgICAgIk1FRElDQUlEX0VYUE5fQ09ERSIsICJFWFBOX0dST1VQIikpCgoKcF90YWJsZShkYXRhLAogICAgICAgIHZhcnMgPSBjKCJZRUFSX09GX0RJQUdOT1NJUyIpLAogICAgICAgIHN0cmF0YSA9IGMoIk1FRElDQUlEX0VYUE5fQ09ERSIpKQpgYGAKCgoKCmBgYHtyfQoKcHJlRXhwTWVkaWNhcmUgIDwtIG5yb3coZGF0YSAlPiUgZmlsdGVyKEVYUE5fR1JPVVAgPT0gIlByZS1FeHBhbnNpb24iICYgSU5TVVJBTkNFX0YgPT0gIk1lZGljYXJlIikpCnBvc3RFeHBNZWRpY2FyZSA8LSBucm93KGRhdGEgJT4lIGZpbHRlcihFWFBOX0dST1VQID09ICJQb3N0LUV4cGFuc2lvbiIgJiBJTlNVUkFOQ0VfRiA9PSAiTWVkaWNhcmUiKSkKCiMgcCA9IDAuMjUgd2hlbiBjb21wYXJpbmcgY2hhbmdlIGluIHByb3BvcnRpb24gb2YgcGF0aWVudHMgd2l0aCBNZWRpY2FyZSBiZWZvcmUgYW5kIGFmdGVyIEFDQSBleHBhbnNpb24KcHJvcC50ZXN0KGMocHJlRXhwTWVkaWNhcmUsIHBvc3RFeHBNZWRpY2FyZSksIAogICAgICAgICAgYyhucm93KGRhdGEgJT4lIGZpbHRlcihFWFBOX0dST1VQID09ICJQcmUtRXhwYW5zaW9uIikpLCBucm93KGRhdGEgJT4lIGZpbHRlcihFWFBOX0dST1VQID09ICJQb3N0LUV4cGFuc2lvbiIpKSkpCgpwcmVFeHBOb0luc3VyYW5jZSA8LSBucm93KGRhdGEgJT4lIGZpbHRlcihFWFBOX0dST1VQID09ICJQcmUtRXhwYW5zaW9uIikgJT4lIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyKElOU1VSQU5DRV9GID09ICJOb25lIikpCnBvc3RFeHBOb0luc3VyYW5jZSA8LSBucm93KGRhdGEgJT4lIGZpbHRlcihFWFBOX0dST1VQID09ICJQb3N0LUV4cGFuc2lvbiIpICU+JSAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIoSU5TVVJBTkNFX0YgPT0gIk5vbmUiKSkKCiMgU2lnbmlmaWNhbnQgZGVjcmVhc2UgaW4gdGhlIG92ZXJhbGwgcHJvcG9ydGlvbiBvZiBwYXRpZW50cyB3aXRob3V0IGluc3VyYW5jZSBhZnRlciBBQ0EgZXhwYW5zaW9uIApwcm9wLnRlc3QoYyhwcmVFeHBOb0luc3VyYW5jZSwgcG9zdEV4cE5vSW5zdXJhbmNlKSwgCiAgICAgICAgICBjKG5yb3coZGF0YSAlPiUgZmlsdGVyKEVYUE5fR1JPVVAgPT0gIlByZS1FeHBhbnNpb24iKSksIG5yb3coZGF0YSAlPiUgZmlsdGVyKEVYUE5fR1JPVVAgPT0gIlBvc3QtRXhwYW5zaW9uIikpKSkKCgpkYXRhIDwtIGRhdGEgJT4lIG11dGF0ZShJbnN1cmVkID0gSU5TVVJBTkNFX0YgIT0gIlVua25vd24iKQoKYGBgCgoKCgojS2FwbGFuIE1laWVyIEFuYWx5c2lzCgoKIyNBbGwKCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIkFsbCIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI0ZhY2lsaXR5IFR5cGUKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiRkFDSUxJVFlfVFlQRV9GIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjRmFjaWxpdHkgTG9jYXRpb24KCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIkZBQ0lMSVRZX0xPQ0FUSU9OX0YiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNGYWNpbGl0eSBHZW9ncmFwaHkKCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIkZBQ0lMSVRZX0dFT0dSQVBIWSIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI0FnZSBHcm91cAoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiQUdFX0YiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNBZ2UgR3JvdXAKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiQUdFXzQwIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjR2VuZGVyCgpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJTRVhfRiIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI1JBQ0VfRgoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiUkFDRV9GIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjSGlzcGFuaWMKCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIkhJU1BBTklDIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjSW5zdXJhbmNlIFN0YXR1cwoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiSU5TVVJBTkNFX0YiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNPdmVyYWxsIFN1cnZpdmFsIHByZS9wb3N0LUFDQSBleHBhbnNpb24KCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIkVYUE5fR1JPVVAiLCBkYXRhX2ltcCA9IG5vX0V4Y2x1ZGVzKQpgYGAKCgo8IS0tICMjSW5jb21lIC0tPgoKPCEtLSBgYGB7cn0gLS0+CjwhLS0gY2xhc3MoZGF0YSRJTkNPTUVfRikgLS0+CjwhLS0gdW5pX3Zhcih0ZXN0X3ZhciA9ICJJTkNPTUVfRiIsIGRhdGFfaW1wID0gZGF0YSkgLS0+CjwhLS0gYGBgIC0tPgoKIyNFZHVjYXRpb24KCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIkVEVUNBVElPTl9GIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjVXJiYW4vUnVyYWwKCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIlVfUl9GIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjQ2xhc3MgKHRyZWF0bWVudCBhdCBwZXJmb3JtaW5nIGZhY2lsaXR5KQoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiQ0xBU1NfT0ZfQ0FTRV9GIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjWWVhcgoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiWUVBUl9PRl9ESUFHTk9TSVMiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNQcmltYXJ5IFNpdGUKCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIlNJVEVfVEVYVC55IiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCgojI0hpc3RvbG9neQoKYGBge3J9CiN1bmlfdmFyKHRlc3RfdmFyID0gIkhJU1RPTE9HWV9GX0xJTSIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgo8IS0tICMjQmVoYXZpb3IgLS0+Cgo8IS0tIGBgYHtyfSAtLT4KPCEtLSB1bmlfdmFyKHRlc3RfdmFyID0gIkJFSEFWSU9SIiwgZGF0YV9pbXAgPSBkYXRhKSAtLT4KPCEtLSBgYGAgLS0+CgojI0dyYWRlCgpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJHUkFERV9GIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjQ2xpbmljYWwgVCBTdGFnZQoKYGBge3J9CiN1bmlfdmFyKHRlc3RfdmFyID0gIlROTV9DTElOX1QiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNDbGluaWNhbCBOIFN0YWdlCgpgYGB7cn0KI3VuaV92YXIodGVzdF92YXIgPSAiVE5NX0NMSU5fTiIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI0NsaW5pY2FsIE0gU3RhZ2UKCmBgYHtyfQojdW5pX3Zhcih0ZXN0X3ZhciA9ICJUTk1fQ0xJTl9NIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjQ2xpbmljYWwgU3RhZ2UgR3JvdXAKCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIlROTV9DTElOX1NUQUdFX0dST1VQIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjUGF0aG9sb2dpYyBUIFN0YWdlCgpgYGB7cn0KI3VuaV92YXIodGVzdF92YXIgPSAiVE5NX1BBVEhfVCIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI1BhdGhvbG9naWMgTiBTdGFnZQoKYGBge3J9CiN1bmlfdmFyKHRlc3RfdmFyID0gIlROTV9QQVRIX04iLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNQYXRob2xvZ2ljIE0gU3RhZ2UKCmBgYHtyfQojdW5pX3Zhcih0ZXN0X3ZhciA9ICJUTk1fUEFUSF9NIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjUGF0aG9sb2dpYyBTdGFnZSBHcm91cAoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiVE5NX1BBVEhfU1RBR0VfR1JPVVAiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNNYXJnaW5zCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIk1BUkdJTlMiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNNYXJnaW5zIFllcy9ObwpgYGB7cn0KI3VuaV92YXIodGVzdF92YXIgPSAiTUFSR0lOU19ZTiIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojIzMwIERheSBSZWFkbWlzc2lvbgoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiUkVBRE1fSE9TUF8zMF9EQVlTX0YiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNSYWRpYXRpb24gVHlwZQoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiUlhfU1VNTV9SQURJQVRJT05fRiIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgoKIyNMeW1waG92YXNjdWxhciBJbnZhc2lvbgoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiTFlNUEhfVkFTQ1VMQVJfSU5WQVNJT05fRiIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI0VuZG9zY29waWMvUm9ib3RpYwoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiUlhfSE9TUF9TVVJHX0FQUFJfMjAxMF9GIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCiMjU3VyZ2VyeSBSYWRpYXRpb24gU2VxdWVuY2UgCgpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJTVVJHX1JBRF9TRVEiLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKIyNTdXJnZXJ5IFllcy9ObwoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiU1VSR0VSWV9ZTiIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI1JhZGlhdGlvbiBZZXMvTm8KCmBgYHtyfQp1bmlfdmFyKHRlc3RfdmFyID0gIlJBRElBVElPTl9ZTiIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI0NoZW1vIFllcy9ObwoKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAiQ0hFTU9fWU4iLCBkYXRhX2ltcCA9IGRhdGEpCmBgYAoKCiMjVHJlYXRtZW50IFllcy9ObwpgYGB7cn0KdW5pX3Zhcih0ZXN0X3ZhciA9ICJUeF9ZTiIsIGRhdGFfaW1wID0gZGF0YSkKYGBgCgojI01ldGFzdGFzZXMgYXQgRHgKYGBge3J9CnVuaV92YXIodGVzdF92YXIgPSAibWV0c19hdF9keF9GIiwgZGF0YV9pbXAgPSBkYXRhKQpgYGAKCjwhLS0gIyNUdW1vciBTaXplIC0tPgoKPCEtLSBgYGB7cn0gLS0+CjwhLS0gdW5pX3Zhcih0ZXN0X3ZhciA9ICJUX1NJWkUiLCBkYXRhX2ltcCA9IGRhdGEpIC0tPgo8IS0tIGBgYCAtLT4KCiNUdW1vciBzcGVjaWZpYyBWYXJpYWJsZXMKCgojIyNOb2RlIFNpemUKCgojQ294IFByb3BvcnRpb25hbCBIYXphcmQgUmF0aW8KCiMjTW9kZWwgIzEKCiMjI0Z1bGwgYW5hbHlzaXMKCmBgYHtyfQptb2RlbF9vbmUgPC0gY294cGgoU3VydihEWF9MQVNUQ09OVEFDVF9ERUFUSF9NT05USFMsIFBVRl9WSVRBTF9TVEFUVVMgPT0gMCkKICAgICAgICAgICAgICAgICAgICAgfiBTVVJHX1JBRF9TRVEgKyBJTlNVUkFOQ0VfRiArIEFHRSArIFNFWF9GICsgUkFDRV9GICsgSU5DT01FX0YgKyBVX1JfRiArCiAgICAgICAgICAgICAgICAgICAgICBGQUNJTElUWV9UWVBFX0YgKyBGQUNJTElUWV9MT0NBVElPTl9GICsgRURVQ0FUSU9OX0YsCiAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRhKQptb2RlbF9vbmUgJT4lIHN1bW1hcnkoKQoKCmBgYAoKIyMjU3VtbWFyeSBvZiBNb2RlbAoKYGBge3J9Cm1vZGVsX29uZSAlPiUKICAgICAgICB0aWR5KC4sIGV4cG9uZW50aWF0ZSA9IFRSVUUpICU+JQogICAgICAgIHNlbGVjdCh0ZXJtLCBlc3RpbWF0ZSwgY29uZi5sb3csIGNvbmYuaGlnaCwgcC52YWx1ZSkgJT4lCiAgICAgICAgcmVuYW1lKFZhcmlhYmxlID0gdGVybSwKICAgICAgICAgICAgICAgSGF6YXJkX1JhdGlvID0gZXN0aW1hdGUpICU+JQogICAgICAgIHRibF9kZiAlPiUKICAgICAgICBwcmludChuID0gbnJvdyguKSkKCmBgYAoKIyBQcmVkaWN0aW9uIExvZ2lzdGljIFJlZ3Jlc3Npb24gTW9kZWxzCgojIyBTdXJnZXJ5CmBgYHtyfQoKbm9fVWtucyA8LSBkYXRhICU+JQogIGZpbHRlcihTVVJHRVJZX1lOICE9ICJVa24iKSAlPiUgCiAgZHJvcGxldmVscygpICU+JSAKICBtdXRhdGUoU1VSR0VSWV9ZTiA9IGFzLmxvZ2ljYWwoU1VSR0VSWV9ZTikpCgpmaXRfc3VyZyA8LSBnbG0oU1VSR19URiB+IEFHRV9GICsgU0VYX0YgKyBSQUNFX0YgKyBJTkNPTUVfRiArIFVfUl9GICsKICAgICAgICAgICAgICAgICAgICAgIEZBQ0lMSVRZX1RZUEVfRiArIEZBQ0lMSVRZX0xPQ0FUSU9OX0YgKyBFRFVDQVRJT05fRiArIEVYUE5fR1JPVVAsCiAgIGRhdGEgPSBub19Va25zKQoKc3VtbWFyeShmaXRfc3VyZykKCmV4cChjYmluZCgiT2RkcyByYXRpbyIgPSBjb2VmKGZpdF9zdXJnKSwgY29uZmludC5kZWZhdWx0KGZpdF9zdXJnLCBsZXZlbCA9IDAuOTUpKSkKYGBgCgojIyBNZXRhc3Rhc2lzIGF0IFRpbWUgb2YgRGlhZ25vc2lzCmBgYHtyfQojIGxpbWl0IHRvIHRob3NlIGNhc2VzIHdoZXJlIGRhdGEgYWJvdXQgZXhwYW5zaW9uIHN0YXR1cyBpcyBhdmFpbGFibGUgKD4gQWdlIDM5LCBub24tYW1iaWd1b3VzIHN0YXR1cyBzdGF0ZXMpCgpmaXRfbWV0cyA8LSBnbG0obWV0c19hdF9keF9GIH4gQUdFX0YgKyBTRVhfRiArIFJBQ0VfRiArIElOQ09NRV9GICsgVV9SX0YgKwogICAgICAgICAgICAgICAgICAgICAgRkFDSUxJVFlfVFlQRV9GICsgRkFDSUxJVFlfTE9DQVRJT05fRiArIEVEVUNBVElPTl9GICsgRVhQTl9HUk9VUCwKICAgZGF0YSA9IGRhdGEpCgpzdW1tYXJ5KGZpdF9tZXRzKQoKZXhwKGNiaW5kKCJPZGRzIHJhdGlvIiA9IGNvZWYoZml0X21ldHMpLCBjb25maW50LmRlZmF1bHQoZml0X3N1cmcsIGxldmVsID0gMC45NSkpKQpgYGA=